.有以下语句:对以下说明语句int a[10]],*p=a;那么p+3表示_____。 A.a[3]的地址 B.a[2]的地址 C.a[3]的数值 D.a[2]的数值

不能表示a数组元素的表达式是( B) a[10] )----因為数组a的最大下标只能是9,即a[9], 
 
 

D选项若改成*(*(p+1)+2)就对了

如果要对p进行初始化, p的每个元素就是int* 也就是p={int*,int*,int*} 如果要获取实际的值 p的前面必须要两个*也就是**p 通过排除法只有p[][]满足

B为什么不对? p首先指向嘚是第一个有3个元素的一维数组,加一之后指向第二个,也代表这个一维数组的首元素地址加一个*,不就是第一个元素的值

p是一个數组指针,p指向一个二维数组的首地址

int (*p)[3]; 表示一个由三个指针组成的数组且每个指针都是指向一个int型。故p=s;表示将s的首地址传给p

B为什么鈈对?p=s所以p指向数组的首元素地址,p+1就是指向数组第2行首元素地址即是s[1]的首地址,取地址后*(p+1)不就是数组s的第二行第一个元素s[1][0]?

b为什么不對不是代表第二行第一个元素吗?

p是指向一个数组的指针+1操作表示指向第二行,因此要得到数组中的s[i][j]可以通过p[i][j]或*(*(p+i)+j)

p是一个数组指针,將二维数组s赋给p之后p[0]指向数组s的第一行,p[1]指向数组s的第二行p[2]指向数组s的第三行。

这里定义p是一个指向具有三个整形元素的数组的指针是二级指针了

p+1会移动12个字节,从而指向第二行开始

这道题你会答吗花几分钟告诉大家答案吧!

来自电脑网络类芝麻团 推荐于

对於数组a[10]a就是该数组的首地址,定义指针p赋值为a那么a和p的操作基本相同:

你对这个回答的评价是?

我要回帖

更多关于 对以下说明语句int a[10] 的文章

 

随机推荐