为什么指针不能分配给C中的数组?

ipk*_*iss 0 c arrays pointers

我有以下代码:

int *pa;

int a[3] = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

为什么pa = a没问题,但a = pa是不允许的?

Ash*_*sha 6

主要区别在于,类型a仍然是一个数组,但它只会在你做的时候衰减成一个指针pa=a;.pa现在将指向数组的第一个元素而不是整个数组本身.当你这样做a=pa时没有任何意义,因为你正在尝试将一个数据类型保存为一个只能指向一个整数的类型.