我有以下代码:
int *pa;
int a[3] = {1, 2, 3};
为什么pa = a没问题,但是不允许a = pa?
答案 0 :(得分:6)
主要区别在于a
的类型仍然是一个数组,但只有当您执行pa=a;
时 将 衰减为指针。 pa
现在将指向数组的 第一个 元素而不是整个数组本身。当你执行a=pa
时,它没有任何意义,因为你正在尝试将一个数据类型指向一个只能指向一个整数的类型。
答案 1 :(得分:0)
注意:这纯粹是概念性的,这不是发生这种情况的实际原因。
我喜欢考虑指针分配,如OOP&继承。
想象一下int *
是一个通用对象。现在,将int []
视为继承自int *
。
正如您所看到的,您可以从int []
向int *
投降,但不能向上投射。