大一C语言题目 24、若有定义语句:int a[2][3],*p[3]; ,则以下
大一C语言题目24、若有定义语句:inta[2][3],*p[3];,则以下24、若有定义语句:inta[2][3],*p[3];,则以下语句中正确的是(C)A)p=a;...
大一C语言题目
24、若有定义语句:int a[2][3],*p[3]; ,则以下24、若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确的是( C )
A)p=a; B)p[0]=a; C) p[0]=&a[1][2]; D)p[1]=&a;
为什么A和B选项是错的?
C选项怎么感觉是错的呀?
麻烦会的大神解释一下,谢谢。快期末考了 展开
24、若有定义语句:int a[2][3],*p[3]; ,则以下24、若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确的是( C )
A)p=a; B)p[0]=a; C) p[0]=&a[1][2]; D)p[1]=&a;
为什么A和B选项是错的?
C选项怎么感觉是错的呀?
麻烦会的大神解释一下,谢谢。快期末考了 展开
2个回答
展开全部
核心在于p的类型。
定义等效于
int *p[3];
这里p是一个数组,包含三个元素,每个元素类型为int *
所以
A p为数组名, 不可以赋值。
B p[0]为int*, 而a为二维数组名,等效于int **, 类型不匹配。
C a[1][2]为a的一个元素,类型是int,所以&a[1][2]是int*, 和p[0]类型相同, 所以这个赋值是合法的。
D 这个没什么说的了,错的比B还离谱, int ***, 赋值给int*, 类型不匹配。
定义等效于
int *p[3];
这里p是一个数组,包含三个元素,每个元素类型为int *
所以
A p为数组名, 不可以赋值。
B p[0]为int*, 而a为二维数组名,等效于int **, 类型不匹配。
C a[1][2]为a的一个元素,类型是int,所以&a[1][2]是int*, 和p[0]类型相同, 所以这个赋值是合法的。
D 这个没什么说的了,错的比B还离谱, int ***, 赋值给int*, 类型不匹配。
展开全部
定义中p[3]表示一个数组,*p[3]表示一个整形指针数组,p[0]是数组成员,是一个整形指针,p=a错因为不能向一个数组赋值
int a[2][3], a是一个二维数组,因此在等式右边a表示一个整形指针的指针,不能赋值给整形指针值p[0],a的子数组a[0],a[1],a[2]才是整形指针
C 中 a[1][2]是一个整形值,取地址&a[1][2]就是整形指针,可以赋值给p[0]
D a和 &a意思一样,表示二维数组a的地址。
int a[2][3], a是一个二维数组,因此在等式右边a表示一个整形指针的指针,不能赋值给整形指针值p[0],a的子数组a[0],a[1],a[2]才是整形指针
C 中 a[1][2]是一个整形值,取地址&a[1][2]就是整形指针,可以赋值给p[0]
D a和 &a意思一样,表示二维数组a的地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询