【发布时间】:2021-04-17 06:36:49
【问题描述】:
我根据随机生成的数字声明了一个数组。现在我知道我们不能在其他任何地方使用在 if 块中生成的数组,但我听说有动态内存分配和向量等方法? 有什么帮助吗?
srand(time(0));
int num=rand() % 6 + 1;
if(num==1)
char word[6] = {'b','a','t','m','a','n'};
if(num==2)
char word[6]={'k','i','l','l','e','r'};
if(num==3)
char word[6]={'b','e','a','u','t','y'};
【问题讨论】:
-
使用头文件中声明的向量,然后重新分配它并在任何你喜欢的地方使用它
-
这是 C++。为什么不
std::string?或者至少std::vector?请记住,“字符数组”只是一个“字符串”。也许您真正需要的是std::vector<std::string>,然后您可以添加三个(或N 个)条目。您在这里要描述的是一个查找表,例如words[n]是单词,其中n在 0 到 2 的范围内。 -
对于随机数,请尝试使用像
std::uniform_int_distribution这样的好工具,而不是像rand(time(NULL))这样的垃圾工具,这可能会产生巨大的意外后果。 -
附注:
rand和模不会产生良好的分布。像这里一样玩一下就可以了——如果你有更强的要求,你可以使用rand() * desired_max / RAND_MAX获得更好的结果——不过,请注意可能的溢出(只是为了将来记住)。 -
"有什么帮助吗?"不是可接受的问题陈述。你的书肯定会教你动态分配。做一些研究,看看你想出了什么!