
二级C语言。
(27)若有定义语句:inta[4][10],*p,*q[4];且0≤i<4,则错误的赋值是()。A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1]...
(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是( )。
A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[2][1]
答案是选择A。
为什么A错了,我感觉C也错了 展开
A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[2][1]
答案是选择A。
为什么A错了,我感觉C也错了 展开
展开全部
就如同处理字符串数组char a[4][10]={"Marry","Smith","John","Will"};
这时候a指向的是第一行的字符串"Marry",而不是指向的"M"
这时候可以认为a是一个字符串指针
那么如何将a指向M呢?就是用a[0]
a[0]作为一个指针,才是一个字符指针,指向的是第一个字符
回到问题上
a[4][10]是一个4行10列的二维数组
虽然a是指向的数组所占用的第一个存储单元
但是a实际指向的是第一行的所有内容的,包括了10个数值
所以把指向10个数值的a赋值给只指向int的p是错误的
而对于C)
a[i]指向的是二维数组中一个确定的元素,即一个int型的数值,p也是指向int型,因此类型相同可以赋值,C正确
这时候a指向的是第一行的字符串"Marry",而不是指向的"M"
这时候可以认为a是一个字符串指针
那么如何将a指向M呢?就是用a[0]
a[0]作为一个指针,才是一个字符指针,指向的是第一个字符
回到问题上
a[4][10]是一个4行10列的二维数组
虽然a是指向的数组所占用的第一个存储单元
但是a实际指向的是第一行的所有内容的,包括了10个数值
所以把指向10个数值的a赋值给只指向int的p是错误的
而对于C)
a[i]指向的是二维数组中一个确定的元素,即一个int型的数值,p也是指向int型,因此类型相同可以赋值,C正确
展开全部
你该仔细看看谭叔的书 a是个二维数组
a,a+1,等表示的是行指针 不是指向列的 而定义一个指向二维数组行的指针
要这样写才对
int a[4][10],(*p)[4];
p=a;
所以A是错的
而C为什么是对的
a[i]就是&a[i][0] 即i行0列的地址 是指向列的
C选项其实就是p=&a[i][0]
现在你看看不就是和D一个样子了吗?
如果你说C错 哪D不也错了吗?
PS:其实你最好把指向二维数组的指针搞明白 什么形式是指向行的 什么形式是指向列的 这种类型题目都不要思考就能做 楼上说的比我清楚,一看就是高手
a,a+1,等表示的是行指针 不是指向列的 而定义一个指向二维数组行的指针
要这样写才对
int a[4][10],(*p)[4];
p=a;
所以A是错的
而C为什么是对的
a[i]就是&a[i][0] 即i行0列的地址 是指向列的
C选项其实就是p=&a[i][0]
现在你看看不就是和D一个样子了吗?
如果你说C错 哪D不也错了吗?
PS:其实你最好把指向二维数组的指针搞明白 什么形式是指向行的 什么形式是指向列的 这种类型题目都不要思考就能做 楼上说的比我清楚,一看就是高手
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-03-24
展开全部
类型不同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询