qhnw.net
当前位置:首页 >> 已知有声明:"int A[3][2]={{1,2},{3,4},{5,6}},*p=A[1... >>

已知有声明:"int A[3][2]={{1,2},{3,4},{5,6}},*p=A[1...

二维数组 6个元素存储空间 依次存储1 2 3 4 5 6p指向a[0]即a[0][0] 1的地址p+4指向之后四个 即5的地址所以*(p+4)输出为5是否有问题? 有问题请追问 没问题请采纳

结果是5,二维数组他们的存储地址是连续的

结果是5,二维数组他们的存储地址是连续的

(*p)[3]=a=a[0][0]=1;*(*p+3)=a[1][0]=4;*p+3=&a[1][0],其值指向a[1][0]的地址,*(*(p+0)+3)=*(*p+3)=4;a[0][3]=3;选D.

是2由于*p=a,p指向了a的第一个元素a[0](*++p)++这个先执行++pp指向a[1]*p就是a[2]转化为a[2]++,由于++先算表达式值在自加1,所以这个表达式的值为2

选择B int *p=&x[2]表示p是一个指向x[2]地址单元的指针,就*p=x[2]=3.所以你要找的是哪一个表达式的意思是:*p.B中 先取值,然后p再++,即输出3,然后p指向&x[3].

int (*p)[4];表明p是行指针,即p指向二维数组中的一行.p=a;这一句表示p指向a[0],也就是指向a数组第0行的第0个元素(a[0][0])的地址.p[2]表示p指向a数组的第二行,即指向a[2]行,也就指向a[2][0]的地址.p[2]+3表示行指针指向a数组的第二行(从第0行开始),(从0开始)第3个元素,也就是a[2][3],*(p[2]+3)表示第2行,第3个元素的值.p+4表示第四行(从0行开始),因为a数组没有第四行,所以是错的.p[4]表示第四行(从0行开始),原因同上.*p表示a数组第0行,第0列地址,**p表示a[0][0]的值,值不会再包含元素,所以(**p)[2]是错的.

错误的是A.它不是元素值,而是元素地址.

有以下定义 int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是( ). A.((*ptr+1)[2]) B.*(*(p+5)) C.(*ptr+1)+2 D.*(*(a+1)+2) 悬赏: 0 答案豆 提问

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.qhnw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com