早教吧 育儿知识 作业答案 考试题库 百科 知识分享

inta[3][4],*p=&a[0][0];p+=6,那么*p和()的值相同A.*(a+6)B.*(&a[0]+6)C.*a[1]+2D.a[1][2]其余三项为什么不对呀

题目详情
int a[3][4],*p=&a[0][0];p+=6,那么*p和( )的值相同 A.*(a+6) B.*(&a[0]+6) C.*a[1]+2 D.a[1][2]
其余三项为什么不对呀
▼优质解答
答案和解析
C语言规定:二维数组元素在内存中顺序排放,排列顺序是按行存放.即先顺序存放第一行的数组元素,然后存放第二行的数组元素,依此类推.
int a[3][4]
第一行:
a[0][0],a[0,1],a[0,2]
此时a[0,2]的地址==p+=3
第二行:
a[1][0],a[1,1],a[1,2]
此时a[1,2]的地址==p+=6
A.*(a+6) a是指向第一行的,此处地址已变成第6行的第一列,故错
B.*(&a[0]+6) &a[0]也是指向第一行的,同上
C.*a[1]+2 取a[1]内容再加2,已不是地址了
D.a[1][2] 正确