【发布时间】:2021-07-29 08:35:19
【问题描述】:
void main()
{
int a[][4]={ 5,7,5,9,
4,6,3,1,
2,9,0,6};
int *p;
int *q [4];
p=(int *)a;
q=a;
printf("\n %u %u",p,q);
p++;
q++;
printf("\n %u %u",p,q);
}
我的问题是我们可以将二维数组分配给指针数组吗?上面的代码显示错误为 1.c:在函数“main”中: 1.c:14:6: 错误:赋值给数组类型的表达式
【问题讨论】:
-
q的声明不正确。它需要是int (*q)[4];括号是强制正确分组所必需的。这样,它将是指向int数组的指针,而不是指向int的指针数组。 -
收到警告时停止投射。演员表不是银弹。
p=(int *)a应该是p = a[0];。代码应该展示你知道自己在做什么的证据;不要投射以隐藏表明你没有的警告。