因为C中数组变量其实是一个隐含的指针变量,一维数组是同类型指针,二维数组是同类型二级指针(一个指针数组),即char a[]="abcd"; // 这里实际上声明了一个char * a,并把a的值指向了字符串"abcd"在内存中的首个地址 char * p =a; // 这里把a中存在的地址赋值给指针变量p,所以后面效果是一样的。类似:int main(){ int a[3][4]= { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; int (*p)[4]=a; int i,j; p=a; for(i=0; i<3; i++){ for(j=0; j<4; j++) printf("%2d ",*(*(p+i)+j)); printf("\n"); } return 0; }
因为C中数组变量其实是一个隐含的指针变量,
一维数组是同类型指针,二维数组是同类型二级指针(一个指针数组),即
类似: