为什么 C++ 数组的括号位于变量上而不是数据类型上?

Moi*_*ish 2 c++ arrays syntax

我有 Java 背景,正在学习 C++。我有一个语言实现/语法决策问题。

在 Java 中,数组声明如下所示:

//generally   
type[] variableName;
//concretely
int[] intArray;
Run Code Online (Sandbox Code Playgroud)

然而,在 C++ 中,它看起来像这样:

//generally
type variableName[size];
//concretely
int intArray[5];
Run Code Online (Sandbox Code Playgroud)

Java 版本对我来说很有意义,括号应该附加数据类型。该变量不是int,而是一个 int 数组,因此我们将 替换intint[]

在C++中,为什么变量名后面有括号?

(此外,当谈到指针时,C++ 似乎同意这一点。int指针不是int* intPtrint ptr*我错过了什么?)

Fan*_*Fox 8

这是一个遗留项目c,以相同的方式声明它。c我认为这很可能就是它最初创建时的做法。在现代 C++ 中,我们可以避免使用静态数组或指针。你的例子可以写成:

std::array<int, 5> intArray;
Run Code Online (Sandbox Code Playgroud)

这既更具描述性,又增加了很多好处。请参阅此处了解更多详细信息。