【问题标题】:Why are the brackets for a C++ array on the variable and not on the data type?为什么 C++ 数组的括号是变量而不是数据类型?
【发布时间】:2023-03-16 20:51:01
【问题描述】:

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

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

//generally   
type[] variableName;
//concretely
int[] intArray;

但是,在 C++ 中,它看起来像这样:

//generally
type variableName[size];
//concretely
int intArray[5];

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

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

(此外,在指针方面,C++ 似乎同意这一点。int 指针是 int* intPtr 而不是 int ptr*。我错过了什么?)

【问题讨论】:

  • C 声明通常模拟变量之后的使用。通过*p 使用指针,通过arr[i] 使用数组。 (由于这两种类型之间的关系,您可以挑剔这一点,但我希望您明白这一点。)
  • int[5] arr 可能更奇怪,因为 arr 的类型可能不是 int*。此外它不允许int arr1[5], arr2[10]
  • 我与 Java 脱节了,但它也不允许 type variablename[] 吗?
  • @cigien - 是的,但该语法是老式的(早期错误,遵循 C/C++ 语法),现在首选“类型 [] 变量”。
  • 在c++中,为什么要在变量名后面加上括号? -- 因为 -- 就是这样。 C++ 不是 Java。

标签: c++ arrays syntax


【解决方案1】:

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

std::array<int, 5> intArray;

这既更具描述性又增加了很多好处。详情请见here

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多