C语言指针问题
若有以下定义和语句,则对a数组元素的正确引用为()。inta[2][3],(*p)[3]p=a;A)(p+1)[0]B)*(*(p+2)+1)C)*(p[1]+1)D)p...
若有以下定义和语句,则对a数组元素的正确引用为( )。
int a[2][3], (*p)[3]
p=a;
A) (p+1)[0] B) *(*(p+2)+1) C) *(p[1]+1) D) p[1]+2
答案为c
请把每个选项 代表 什么详解一下,谢谢 展开
int a[2][3], (*p)[3]
p=a;
A) (p+1)[0] B) *(*(p+2)+1) C) *(p[1]+1) D) p[1]+2
答案为c
请把每个选项 代表 什么详解一下,谢谢 展开
2个回答
展开全部
int (*p)[3]; p 是一个 “行指针”,每行有3个元素。
p=a; 让 行指针 p 指向 a[0]这行。p 指向的地址等于 &a[0][0]。
*(p[1]+1) 等于 p[1][1] , 等于 a[1][1] 元素的值。
printf("%d %d %d\n",*(p[1]+1),p[1][1], a[1][1]); 输出 元素的值。
A: (p+1)[0] 这个是地址,等于 &a[1][0]。
B: *(*(p+2)+1) 如果 声明的是 int a[3][3],那么是对的,它等于 a[2][1] 元素的值,
可惜,声明的是 int a[2][3]。
D: p[1]+2 把地址看作数值,在运算,与 a的元素 没什么关系。
p=a; 让 行指针 p 指向 a[0]这行。p 指向的地址等于 &a[0][0]。
*(p[1]+1) 等于 p[1][1] , 等于 a[1][1] 元素的值。
printf("%d %d %d\n",*(p[1]+1),p[1][1], a[1][1]); 输出 元素的值。
A: (p+1)[0] 这个是地址,等于 &a[1][0]。
B: *(*(p+2)+1) 如果 声明的是 int a[3][3],那么是对的,它等于 a[2][1] 元素的值,
可惜,声明的是 int a[2][3]。
D: p[1]+2 把地址看作数值,在运算,与 a的元素 没什么关系。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询