gpt4 book ai didi

C++ 指针数组不接受更多值

转载 作者:行者123 更新时间:2023-11-28 01:15:23 25 4
gpt4 key购买 nike

请问,为什么这个指针数组不能接受超过 5 个值?

正在做 Prata 的 C++ 书中的练习,但卡在了这个问题上。

//ex2_numrow -- showing entered numbers til zero is entered 
#include <iostream>
using namespace std;

int main()
{
int n = 0;
int num = 0;
int* entered = new int[1];

do
{
cout << "Enter number: ";
cin >> num;
entered[n] = num;

cout << "Your numbers: ";
for (int i = 0; i <= n; i++)
{
cout << entered[i] << " ";
}

cout << endl << endl;
n++;

} while (num);
delete[] entered;

return 0;
}

最佳答案

代码 int* entered = new int[1]; 为您提供了一个指向大小为 one! 的数组的指针

然后尝试在该数组之外写入值是非常不明智的(即,未定义的行为)。 最好的情况是您的代码会在导致任何严重问题之前崩溃。

As an aside, the set of use cases for raw pointers is fast dwindling in C++, you should generally be looking at smart pointers instead.

我说“通常”是因为,如果您的意图是拥有一个可调整大小的数组,那么即使是智能指针也无济于事。 帮助的是一个我喜欢称之为 std::vector 的小东西 :-) 您可能应该考虑将其用于您的直接目的。

例如,这个程序接受正数,将它们加到 vector 中,然后打印出来:

#include <iostream>
#include <vector>

int main() {
std::vector<int> numbers;
int num;

do {
std::cout << "Enter number: ";
std::cin >> num; // should probably check for errors in real code
if (num >= 0) {
numbers.push_back(num);
}
} while (num >= 0);

std::cout << "You entered:";
for (int num: numbers) {
std::cout << ' ' << num;
}
std::cout << '\n';
}

关于C++ 指针数组不接受更多值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58888096/

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