多维数组 与 指针

来源:互联网 发布:好书 知乎 编辑:程序博客网 时间:2024/05/17 02:07

记住公式*(*(ptrArray+i)+j) == ptrArray[i][j]


    #include<stdio.h>          int main(void){         int zippo[4][2] = {{2,4},{6,8},{1,3},{5,7}};              printf("zippo=%p,zippo+1=%p",zippo,zippo+1);//zippo指向的数据类型是包含两个int类型的数组,所以类型大小是8字节,所以地址实际                                                     //增长了8个字节         printf("zippo[0]=%p,zippo[0]+1=%p",zippo[0],zippo[0]+1);//zippo[0]指向的数据类型是int类型,所以类型大小是4字节,所以地址实际                                                     //增长了4个字节              return 0;     } 


记住

zippo[m][n] == *(*(zippo+m)+n)

p[m][n] == *(*(p+m)+n)

    #include<stdio.h>          int main(void){         int zippo[4][2] = {{2,4},{6,8},{1,3},{5,7}};         int (*p)[2] = zippo;//必须要有括号,否则int *p [2]声明的是一个数组,该数组含有两个指针,这两个指针指向int类型              printf("zippo=%p,zippo+1=%p",p,p+1);//p指向的数据类型是包含两个int类型的数组,所以类型大小是8字节,所以地址实际                                                     //增长了8个字节         printf("zippo[0]=%p,zippo[0]+1=%p",p[0],p[0]+1);//p[0]指向的数据类型是int类型,所以类型大小是4字节,所以地址实际                                                     //增长了4个字节              return 0;     }