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

时间:2012-03-12 13:32:14

标签: c arrays pointers

我有以下代码:

int *pa;

int a[3] = {1, 2, 3};

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

注意:这纯粹是概念性的,这不是发生这种情况的实际原因。

我喜欢考虑指针分配,如OOP&继承。

想象一下int *是一个通用对象。现在,将int []视为继承自int *

的对象

正如您所看到的,您可以从int []int *投降,但不能向上投射。