有关指针的C语言试题求解
inta[5][6],(*p1)[6],*p2[5],**p3;下面正确的是Ap1=a[0]Bp1=p2Cp3=p1Dp3=p2请详细解说,尤其是cd选项答案是D,但为什...
int a[5][6],(*p1)[6],*p2[5],**p3; 下面正确的是
A p1=a[0] B p1=p2 C p3=p1 D p3=p2
请详细解说,尤其是c d选项
答案是D,但为什么呢?希望高手说清原因 展开
A p1=a[0] B p1=p2 C p3=p1 D p3=p2
请详细解说,尤其是c d选项
答案是D,但为什么呢?希望高手说清原因 展开
展开全部
您好楼主,ishead的回答是正确的,我稍微多啰嗦一下。
int a[5][6]是一个二维数组,a[0]的意思是数组的第一行元素,
比如
a[5][6]=
{
{0,1,2,3,4,5},
{0,1,2,3,4,5},
{0,1,2,3,4,5},
{0,1,2,3,4,5},
{0,1,2,3,4,5}
};
于是有
a[0]= {0,1,2,3,4,5};
而
(*p1)[6]
告诉我们p1是一个指针,因为其前面有一个*号
一个指针和一行整数之间无法赋值,所以A不对。A可改为:p1=&a[0]; 或p1=a;
针对B选项:
p1是指针,上面刚解释过了。但是p2是什么?假设我写一个p2[5],本身数组名p2就是一个指针,对吧?那么在前面再加一个*呢?楼主就明白啦吧!*p2[5]的p2就是指针的指针了。B不对啦吧!可以改为:p1=&p2 或者 *p1=p2
针对C选项:
p1是指针,上面刚解释过了。但是p3是什么?显然是指针的指针,前面两个*嘛!所以显然不对啦。可改为:p3=*p1 或者&p3=p1
针对D选项:
p3是指针的指针,P2也是指针的指针,上面刚解释过了。之间可以赋值。正确!
哈哈,不知道楼主明白啦没,如果没有,可以继续对我发问哦。
int a[5][6]是一个二维数组,a[0]的意思是数组的第一行元素,
比如
a[5][6]=
{
{0,1,2,3,4,5},
{0,1,2,3,4,5},
{0,1,2,3,4,5},
{0,1,2,3,4,5},
{0,1,2,3,4,5}
};
于是有
a[0]= {0,1,2,3,4,5};
而
(*p1)[6]
告诉我们p1是一个指针,因为其前面有一个*号
一个指针和一行整数之间无法赋值,所以A不对。A可改为:p1=&a[0]; 或p1=a;
针对B选项:
p1是指针,上面刚解释过了。但是p2是什么?假设我写一个p2[5],本身数组名p2就是一个指针,对吧?那么在前面再加一个*呢?楼主就明白啦吧!*p2[5]的p2就是指针的指针了。B不对啦吧!可以改为:p1=&p2 或者 *p1=p2
针对C选项:
p1是指针,上面刚解释过了。但是p3是什么?显然是指针的指针,前面两个*嘛!所以显然不对啦。可改为:p3=*p1 或者&p3=p1
针对D选项:
p3是指针的指针,P2也是指针的指针,上面刚解释过了。之间可以赋值。正确!
哈哈,不知道楼主明白啦没,如果没有,可以继续对我发问哦。
展开全部
C
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A选项是正确的。二维数组a[5][6],a[0]=&(*a[0][0])表示的指向有6个元素的指针,与p1是一致。
B错误。p2实际是一个指针数组的数组名,不能赋值给p1,因为p1一个指向数组的指针。
C错误。因为p3是一个指向指针的指针,而p1一个指向数组的指针。
D错误。因为p3是一个指向指针的指针,p2是一个指针数组的数组名。
B错误。p2实际是一个指针数组的数组名,不能赋值给p1,因为p1一个指向数组的指针。
C错误。因为p3是一个指向指针的指针,而p1一个指向数组的指针。
D错误。因为p3是一个指向指针的指针,p2是一个指针数组的数组名。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
D
p1 = a[0]; Operation between types "int(*)[6]" and "int*" is not allowed.
p1 = p2; Operation between types "int(*)[6]" and "int**" is not allowed.
p3 = p1; Operation between types "int**" and "int(*)[6]" is not allowed.
p2 也是 int ** 类型的。 一般[]可以等同于多一个 *
p1 = a[0]; Operation between types "int(*)[6]" and "int*" is not allowed.
p1 = p2; Operation between types "int(*)[6]" and "int**" is not allowed.
p3 = p1; Operation between types "int**" and "int(*)[6]" is not allowed.
p2 也是 int ** 类型的。 一般[]可以等同于多一个 *
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询