数组是全部独立的对象,而不是指针。考虑一个更简单的对象:
int a = 0;
Run Code Online (Sandbox Code Playgroud)
您希望能够更改其地址吗?当然不是。对象是具有类型的存储区域。存储区域由其地址标识,因此您不会期望对其进行更改。数组也是对象。当你声明
int b[8] = {0};
Run Code Online (Sandbox Code Playgroud)
您声明一个对象,该对象的大小为8个整数,将占用一些存储空间。您只能更改其单个int的地址,而不能更改其地址。
您可能已经被告知数组是指针。但事实并非如此!它们可能甚至经常隐式地转换为指针,但是它们仍然是对象类型。指针通常代表数组,因为第一个元素的地址足以通过指针算术到达任何其他元素,但是指针不是数组对象本身。当检查它们的对象属性时,差异变得明显。例如:
sizeof(b) != sizeof(int*)
Run Code Online (Sandbox Code Playgroud)
对象b不是指针的大小,实际上是8个整数的大小,可能比指针大。