c语言学习之指针与二维数组

二维数组,数组名为第数组第一个元素的地址即a为&a[0][0],第一行的行名(为一维数组a[1])也为第一个元素地址,同理第二行的行名为第二个行第一个元素的地址即a[0]为&a[0][0].a[2]为&a[2][0],综上即a==a[0]==&a[0][0],a[2]==&a[2][0]       数组名加一为行数加一即a+1为第二行即a+1==&a[1]注:&a[1]==a[1]表示第一行的地址,一维数组加一为二维数组的地址即a[0]+1==&a[0][1] 其实以上一维数组就可以看成指针。

运行以下程序可知

1.     #include<stdio.h>

2.     void main()

3.     {

4.            int a[3][2]={{1,2},{2,3},{4,5}},*p;

5.             

6.     printf("%d %d %d %d %d %d%d %d %d\n",a,a[0],a[0]+1,a+1,a[1],a[1]+1,a+2,a[2],a[2]+1);

7.     printf("%d %d %d %d %d %d%d %d%d\n",&a[0],&a[0][0],&a[0][1],&a[1],&a[1][0],&a[1][1],&a[2],&a[2][0],&a[2][1]);

8.     }

“*”代表取内容,所以*a即为a[0],*a[0]即为a[0][0],*(a+1)为第二行的地址,*(a+1)+1为第二行第二列的地址,“*”理解为把地址中的数据读出来,a的内容就是第一行。

1.     #include<stdio.h>

2.     void main()

3.     {

4.            int a[3][2]={{1,2},{3,4},{5,6}};

5.             

6.     printf("%d %d %d %d %d\n",*a,*(a+1),*(a+1)+1,**(a+0)+1,*a[0]);

7.     }运行则知

猜你喜欢

转载自blog.csdn.net/dy1314fowever/article/details/80355672