C语言的数组指针与指针数组(One)

作者: 遮天的龙 | 来源:发表于2016-06-25 13:05 被阅读389次

    一、数组指针与指针数组:

    • 数组指针<——>本质是指针
    • 指针数组<——>本质是数组
      上图:
    数组指针与指针数组
    理解*(arr +0)     &arr[0]     &arr[0]+1
    
    a 表示第 0 行首地址, a+i 表示第 i 行首地址
    *(a+i), a[i], &a[i][0]表示第 i 行第 0 个元素地址
    *(a+i)+j, a[i]+j, &a[i][j]表示第 i 行第 j 个元素地址
    *(*(a+i)+j) *(a[i]+j), a[i][j]表示第 i 行第 j 个元素
    

    二、数组指针: int (*pName)[N];

    对一维数组取地址,等价于数组指针而不是二级指针。
    例如:

    int arrray[10];
    int(*pa)[10] = &array; 正确
    int **pa = &array; 错误
    

    指针 32位机下,大小均为4个字节;
    指针的本质,就是一个有类型的常量地址;

      Type * var;
      type 决定了类型(步长),* 表示该变量是指针,var 用于存储地址;
      切记: 指针的运算是,地址值+类型的运算;
    

    int [10]   printf("(int)&a[9]-(int)&a[4] = %d\n",
    (int)&a[9] -(int)&a[4])=20;
    (int)&a[9] 结果为int型数值了;
    
    • 二级指针:是一种指向指针的指针。程序员可以通过它实现间接访问数据,和改变一级指针的指向问题。
      (1)、定义、初始化;通过n级指针,修改n-1级指针的指向;间接数据访问;
      (2)、二级指针的步长,都是4字节。

    相关文章

      网友评论

        本文标题:C语言的数组指针与指针数组(One)

        本文链接:https://www.haomeiwen.com/subject/czkadttx.html