c++ 指针访问数组
用指针访问一维数组 用指针访问二维数组 用指针访问三维数组 一、 用指针访问一维数组 //代码 int i=0; int a[2]={11,22}; int *p=&a; //int *p=&a[0]; printf("%d\n",*p); p++; printf("%d",*p); //代码 int i=0; int a[2]={11,22}; int *p=&a; //int *p=&a[0]; for(i=0;i<2;i++,p++) { printf("%d\n",*p); } //代码 int i=0; int a[2]={11,22}; int *p=&a; //int *p=&a[0]; for(i=0;i<2;i++) { printf("%d\n",p[i]); }
二、 用指针访问二维数组 //代码 int i,j; int a[2][3]={11,22,33, 31,32 ,83}; //int (*p)[5]=&a[0][0];//(5*1+0)*4 错误的 int (*p)[3]=&a[0][0];//(3*1+0)*4 for (i=0;i<2;i++) for (j=0;j<3;j++) { printf("%d\n",p[i][j]); } printf("%d,%d", p[1][0], a[1][0]); 三、 用指针访问三维数组 //代码 int a[2][3][4]={ {{ 1, 2 , 3 , 4} , {5 , 6 , 7 , 8} ,{ 9,10,11,12}}, {{13,14,15,16} , {17,18,19,20} , {21,22,23,24}} }; #include <stdio.h> #include <string.h> int main(void) { int a[2][3][4]={ {{ 1, 2 ,3 ,4} , {5, 6, 7, 8} ,{ 9,10,11,12}}, {{13,14,15,16} , {17,18,19,20} ,{21,22,23,24}} }; int (*p)[3][4]=(void*)0x12ff04;//0x12ff04 int i,j,k; printf("%x\n",&a); for (i=0;i<2;i++) { for (j=0;j<3;j++) { printf("{"); for (k=0;k<4;k++) { printf("%d,",p[i][j][k]); } printf("},"); } printf("\n"); } getchar(); return 0; } 小结: 访问 int a[x][y][z][i][j]的指针 定义为 int (*p)[y][z][i][j]