6.4 C语言数组和指针地区别是什么?

数组自动分配空间, 但是不能重分配或改变大小。指针必须明确赋值以指向分配的空间(可能使用malloc), 但是可以随意重新赋值(即, 指向不同的对象), 同时除了表示一个内存块的基址之外, 还有许多其它的用途。

由于数组和指针所谓的等价性(参见问题6.3), 数组和指针经常看起来可以互换, 而事实上指向malloc 分配的内存块的指针通常被看作一个真正的数组(也可以用[ ] 引用)。参见问题6.11 和6.13。但是, 要小心sizeof。

参见问题1.13 和20.12。