我正在解决一个问题,在输入 n 的值之前,我将数组的大小声明为 n,它适用于第一个测试用例,但不适用于第二个测试用例。为什么?
P.S:我在网上找不到任何相关信息。
这是代码片段
int n,arr[n];
cin>>n;
int n,arr[n];
cin>>n;
这尝试定义一个 VLA(可变长度数组)。然而,VLA 不是 C++ 的一部分。
这可能会被支持作为编译器的扩展(例如g++
支持作为扩展)。在这种情况下,你仍然有问题。当你定义数组时,n
未初始化。所以它会触发未定义的行为。
你想读n
before定义 VLA:
int n;
std::cin >> n;
int arr[n];
请注意,VLA 分配于stack. So if n
值足够大,您将由于溢出而出现未定义的行为(=未定义的行为)。因此,最好避免使用 VLA。你可以使用std::vector<int>
反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)