• C++——指针2-指向数组的指针和指针数组


    7.4 指向数组元素的指针

    声明与赋值

    例:int a[10], *pa;

        pa=&a[0]; 或 pa=a[p1] ;

    通过指针引用数组元素,经过上述声明及赋值后:

    *pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i].

    a[i], *(pa+i), *(a+i), pa[i]都是等效的。不能写 a++,不能给数组名赋值或者试图改变其值,因为a是数组首地址是常量。

    例子:使用三种方法输出数组元素

    使用数组名和下标

    使用数组名指针运算

    使用指针变量

    int main()

    {   int a[10];   int i;

       for(i=0; i<10; i++)

         cin>>a[i];

       cout<<endl;

       for(i=0; i<10; i++)

         cout<<a[i];}

    int main()

    {   int a[10];   int i;

       for(i=0; i<10; i++)

          cin>>a[i];

       cout<<endl;

       for(i=0; i<10; i++)

         cout<<*(a+i);}

    int main()

    {   int a[10];   int *p, i

       for(i=0; i<10; i++)

            cin>>a[i];

       cout<<endl;

       for(p=a; p<(a+10); p++)

            cout<<*p;}

    7.5 指针数组

    指针数组的元素是指针型,例如:point *pa[2];由pa[0] ,pa[1]两个指针组成。

    #include <iostream>
    
    using namespace std;
    
    int main()
    
    {
    
             int line1[]={1,0,0};      //声明数组,矩阵的第一行
    
             int line2[]={0,1,0};      //声明数组,矩阵的第二行
    
             int line3[]={0,0,1};      //声明数组,矩阵的第三行
    
            
    
             int *p_line[3];     //声明整型指针数组
    
             p_line[0]=line1; //初始化指针数组元素
    
             p_line[1]=line2;
    
             p_line[2]=line3;
    
            
    
             cout<<"Matrix test:"<<endl;         //输出单位矩阵
    
             for(int i=0;i<3;i++)     //对指针数组元素循环
    
             {
    
                 for(int j=0;j<3;j++)      //对矩阵每一行循环
    
                 {   cout<<p_line[i][j]<<" ";   }
    
                 cout<<endl;
    
             }
    
    }
    
     
    

      

    #include <iostream>
    
    using namespace std;
    
    int main()
    
    {
    
             int array2[2][3]={{11,12,13},{21,22,23}};     //声明二维int型数组
    
             for(int i=0;i<2;i++)
    
          {
    
                 cout<<*(array2+i)<<endl;   //输出二维数组第i行的首地址
    
                 for(int j=0;j<3;j++)
    
              {  cout<<*(*(array2+i)+j)<<" ";    }       //逐个输出二维数组第i行元素值
    
    //写成 {  cout<<*array2[i][j]<<" ";  }比较好。
    
                 cout<<endl;
    
             }
    

      

    }//输出结果为:

    0X0065FDE0

    11,12,13

    0X0065FDEC

    21,22,23

  • 相关阅读:
    Spread Studio中文支持图解
    C#反射实例No.1
    关于XML序列化的简单例子
    将数据结构类型序列化和反序列化(BinaryFormatter类)
    获取计算机名称,IP,MAC地址
    原始套接字发送自定义IP包
    IP包首部格式
    struct和byte[]相互转换(用Marshal类实现)
    图片保存到数据库和从数据库读取图片并显示(C#)
    单词分析器源码
  • 原文地址:https://www.cnblogs.com/lemaden/p/10237984.html
Copyright © 2020-2023  润新知