我知道java中的数组可以声明为
int[3] values;
或
int value[3];
这两种形式在c ++中也有效吗?
提前感谢您的帮助!
答案 0 :(得分:2)
没有。只有第二个在C或C ++中有效。
答案 1 :(得分:1)
在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 ++原始数组是最糟糕的数组语言设计之一,因此最好使用上面讨论的替代方案。