【发布时间】:2015-12-24 11:50:15
【问题描述】:
我知道在java中一个数组可以声明为
int[3] values;
或
int value[3];
这两种形式在 c++ 中也有效吗?
提前感谢您的帮助!
【问题讨论】:
-
这不是你想被问到的问题类型,因为它没有显示出你的任何努力。
-
@user5709212:这不是您想要与 SO 社区互动的方式。
我知道在java中一个数组可以声明为
int[3] values;
或
int value[3];
这两种形式在 c++ 中也有效吗?
提前感谢您的帮助!
【问题讨论】:
没有。只有第二个在 C 或 C++ 中有效。
【讨论】:
在 C++ 中,您最好将std::array(或类似类型)用于固定大小的数组,如下所示:
array<int, 3> values;
对于动态大小,通常使用std::vector(或类似类型),如下所示:
vector<int> values( 3 );
声明int[3] values在C++中无效,但可以写
template< class Some_type >
using Type_ = Some_type;
// ...
Type_< int[3] > values;
C++ 数组在 C++ 类型系统中构成了一个大漏洞,因为在需要指针的上下文中,C++ 数组表达式衰减为指向第一项的指针。 Java 数组构成了 Java 类型系统中的一个较小的漏洞。由于数组项的类型不正确,仍然有可能在 Java 中出现异常(运行时错误)。这似乎表明数组很难用任何语言正确处理。然而,C++ 原始数组是最糟糕的数组语言设计之一,因此最好使用上面讨论的替代方案。
【讨论】: