C语言 数组指针赋值给二维数组


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: In function ' main ':1.c:14:6:错误:赋值给数组类型的表达式

在C语言中,数组不是一等公民:

  • 数组在表达式
  • 中使用时将衰变成指针
  • 永远不能赋值给数组

如果q是一个指针数组,答案是否定的,你不能给数组赋值。

如果你想让q是指向数组的指针,你必须声明它为int (*q)[4];:

int(*q)[4];
q = a;

您可以使用它来访问a的元素:q[i][j]a[i][j]相同(q[i]q[j]相同)

最新更新