c语言求助

设int a[3][4],*p[3];则下面正 确的是
A p=a[0]; B p[1]=a; C p[1]=a[2]; D p=a; 为什么?谢谢

B
首先明确一点:数组名代表的是数组在内存中的首地址,举个例子:
对于数组p[3],p[0]的内存地址是d0,则p[1]地址是d0+1,p[2]是d0+2,p就代表d0
这里显然是将a数组的首地址赋给一个指针变量,能表示a数组首地址的只有a,而a[0]等存放的是a数组具体值,所以排除A,C
再看p,p既然是指针,那p数组里面的元素应该用来存放地址,而p[1]表示p数组的第一个元素存放的值,p表示的是内存给p数组分配的空间首地址,就是上面说的d0,根据题意显然选B,表示将a数组的首地址放入p[1]中
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-13
相似回答