深入理解二维数组
Posted 自由石匠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解二维数组相关的知识,希望对你有一定的参考价值。
1 #include<stdio.h> 2 #define debug 0 3 int main() 4 { 5 int a[3][4]={{8,2,6,4},{1,4,7,9}},i,j; 6 #if debug 7 a++; 8 a[0]++; 9 a[1]++; 10 a[2]++; 11 a[3]++; 12 #endif 13 printf("a:%p a+1:%p\\n\\n",a,a+1);//相差16字节 14 15 printf("a[0]:%p a[0]+1:%p &a[0][1]=%p\\n",a[0],a[0]+1,&a[0][1]); 16 printf("a[1]:%p a[1]+1:%p &a[1][1]=%p\\n",a[1],a[1]+1,&a[1][1]); 17 printf("a[2]:%p a[2]+1:%p &a[2][1]=%p\\n",a[2],a[2]+1,&a[2][1]); 18 printf("a[3]:%p a[3]+1:%p &a[3][1]=%p\\n",a[3],a[3]+1,&a[3][1]); 19 return 0; 20 }//a[0] ,a[1],a[2],a[3]是一维数组名,代表一维数组的起始地址,是地址常量 21 //a+1和a的地址差16个字节,相当于四个元素,a代表第一行的地址,a+1代表第二行的地址。 22 /*a[0]+1和a[0]的地址差4个字节,相当于1个数组元素。因此a[0]+1相当于元素a[0][1]的地址 23 a[1]+1=&a[1][1],a[2]+1=&a[2][1] */
以上是关于深入理解二维数组的主要内容,如果未能解决你的问题,请参考以下文章