gpt4 book ai didi

C++通过for循环插入数组

转载 作者:行者123 更新时间:2023-11-28 00:05:33 25 4
gpt4 key购买 nike

我是 C++ 的初学者,试图通过 for 循环将数据插入数组,但是,它抛出 Stack around the variable 'numArray' was corrupted.

我的代码:

//Initializing and declairing variables
int numVal = 0;
int numArray[] = {0};

cout << "Enter the number of values to average: ";
cin >> numVal;

//Loop through to accept all values and allocate them to an array
for (int i = 0; i < numVal; i++) {
cout << "[" << i << "] = ";
cin >> numArray[i];
}

我的代码有什么问题?

编辑:我必须使用数组而不是 vector 。

最佳答案

int numArray[] = {0}

在这一行中,您指定 numArray 可以容纳一个整数。稍后,当您尝试输入大于 1 的整数时,您会得到 undefined behavior。 .将此视为一个 promise 。这行是你 promise “给我一个内存位置,我保证我不会读取或写入超过第一个 n 个地址的任何内容。”当您违背这个 promise 时,理论上任何事情都可能发生。

要修复它,您需要为该数组分配更多内存,并检查以确保您永远不会定义超过该数字的内容。或者,更简单和更 c++ 的方法是使用一个数组,它会自动为您执行此操作,例如 vector。 .

如果您真的必须使用数组,请确保您有某种方法可以跟踪何时输入了那么多元素。例如:

const int SIZE = 10;
int numArray[SIZE];

...

std::cout << "Enter the number of values to average (less than " << SIZE << ")" << std::endl;
std::cin >> numVal;
if (numVal >= SIZE)
{
std::cout << "Please enter a number smaller than " << SIZE << std::endl;
}

关于C++通过for循环插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35856344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com