下面的c语言代码中 p=&a[0] p得到的是二维数组a的地址吗?把p=&a[0]换成p=a可以吗

#include<stdio.h>
#define N 4main()
{
int a[3][N],i,j;
int (*p)[N];
p=&a[0]
printf("please intput:\n");
for(i=0;i<3;i )
for(j=0;j<N;j )
scanf("%d",&a[i][j]);
max(p,3);

}

a声明为int a[3][N],说明a是一个二维数组,第一维是3,第二维是4(N=4),
p声明为int (*p)[N],说明p是一个指向含有4个元素的一维数组的指针,
所以p是可以指向a的。
一般地,要让p指向二维数组a,是把a数组的第一个元素a[0][0]的地址赋值给它,即:
p=&a[0][0]
但是,在c语言中,a[0]、&a[0]和a都是指向0行0列元素的地址,也就是说,它们从数值上都跟&a[0][0]是相同的,所以,写成p=&a[0]或者写成p=a,都与p=&a[0][0]等价。
所以通常都用最简单的写法p=a了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-04
把p=&a[0]换成p=a也可以的追问

你能肯定吗?

追答

这是肯定无疑的。

第2个回答  2018-01-04
是,是,两问都是。追问

你确定吗?

相似回答