关于操作本机数组的快速问题


#include <iostream>
int
main(void)
{
int n;
std::cin >> n;
int x[n];
return 0;
}

从C的角度来看,我想上面的代码不应该正确编译,因为数组"x"的大小还没有定义。

只有在用户传递变量"n"的参数后,才能定义"x"的大小,但代码在编译和运行时没有崩溃,我想知道为什么。

如果它是用C编写的,我想人们会将malloc用于运行时可配置的数组。

也许我对数组、内存分配、编译器以及c和c++之间的关系有一些误解。如果我错了,请纠正我。

否,从C的角度来看,该代码无效,因为<iostream>不是C标头,而std::cin是语法错误。另一方面,int x[n];部分也可以:它是一个可变长度的数组,这是C99中首次引入的功能。

标准C++没有可变长度(本机(数组。g++允许它们作为扩展,不过:

ISO C99中允许使用可变长度的自动数组,GCC在C90模式和C++中接受这些数组作为扩展。

通常,在C++中,您会使用std::vector

最新更新