gpt4 book ai didi

c++ - 数组长度,为什么从命令行中获取时不能使用它?

转载 作者:太空宇宙 更新时间:2023-11-04 15:30:55 24 4
gpt4 key购买 nike

我试图让我的一个 argv(它是一个作为字符串发送的 int)成为数组的长度,但编译器一直告诉我 num_of _players 不是常量,不能使用。
任何建议为什么?

#include <iostream>

using namespace std;

int main(int argc, char** argv)
{
int num_of_players = stoi(argv[argc - 1]);
int player_list[num_of_players];

return 0;
}

最佳答案

问题在于以这种方式声明数组需要在编译时提供大小。它们不能用在运行时发现的值来声明。

最基本的替代方法是使用您可以手动创建的动态数组:

#include <iostream>

using namespace std;

int main(int argc, char** argv)
{
int num_of_players = stoi(argv[argc - 1]);
int* player_list = new int[num_of_players];

// do stuff with player_list here...

delete[] player_list; // REMEMBER to delete[] it!!

return 0;
}

当您使用 newnew[] 创建某些东西(如数组)时,您必须使用 手动处理它们(包括归还内存) >deletedelete[] 分别。然而,这可能会被遗忘,因此它是内存泄漏的潜在来源。出于这个原因,人们通常会使用一种类型来自动管理动态数组,例如 std::vector

关于c++ - 数组长度,为什么从命令行中获取时不能使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53117877/

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