数组是数据类型吗?

0 c c++ arrays types

数组是数据类型还是指向第一个元素的指针?

Kei*_*son 8

你问的是两种不同的语言,C和C++.他们碰巧在这个领域(大多数)都有相同的规则,但重要的是要记住他们是两种截然不同(但密切相关)的语言.

它还取决于"数组"的含义.通常最好将"数组"一词视为形容词,而不是名词; 因此,您可以拥有数组类型,数组对象(数组类型的对象),数组表达式(数组类型的表达式),等等.

C和C++标准没有定义短语"数据类型",尽管这两个标准确实使用了非正式的短语几次.鉴于上下文,相当清楚的是,短语"数据类型"与"对象类型"同义.

C有两种类型,对象类型和函数类型.(在C11标准之前,不完整类型是第三种;定义在2011年更改,因此不完整类型是对象类型的子集.)

数组类型是一种对象类型(不,这不是意见问题).

如果你被告知一个数组"真的"是指向它的第一个元素的指针,你就会被误导.数组表达式在大多数但不是所有上下文中都隐式转换为指向数组第一个元素的指针.数组对象仍然存在,仍然是一个对象,仍然是数组类型.

建议阅读:comp.lang.c FAQ的第6部分.