gpt4 book ai didi

c++ - 我是否正确创建了这个字符串数组? C++

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:11 27 4
gpt4 key购买 nike

指导是“创建一个创建 50,000 个字符串数组的函数 - 重复“嗨”、“嘿”、“你好”、“怎么了”12,500 次。从函数返回字符串数组。给出函数一个适当的名称和返回类型。”

这是我编写的代码,它可以编译,但我不确定数字是否正确。

string* greetingArray()
{
string greetings[50000];
for(int i = 0; i < 50000; i++)
{
greetings[i++] = "Hi";
greetings[i++] = "Hey";
greetings[i++] = "Hello";
greetings[i++] = "What's up";
}

for (int i = 0; i < 50000; i++)
{
cout << greetings[i] << endl;
}
return 0;
}

int main()
{
greetingArray();
return 0;
}

我在一个简单的 main 中调用了它,这是调用该函数的好方法吗?我在第一个 for 循环中的代码是“i < 12500”,但我不确定。

最佳答案

函数错误。您将其返回类型声明为

string*

但是该函数始终返回零(或空)指针。那就是函数不返回数组也可能不返回数组因为它被定义为局部变量

string greetings[50000];

退出函数后销毁

这个循环也是无效的

for(int i = 0; i < 50000; i++)
{
greetings[i++] = "Hi";
greetings[i++] = "Hey";
greetings[i++] = "Hello";
greetings[i++] = "What's up";
}

例如索引为 4 的数组元素将不会被设置。

更准确地说,函数可以按以下方式定义(无需测试)

#include <iostream>
#include <string>

std::string * greetingArray( size_t n )
{
const size_t N = 4;
const char *words[N] = { "Hi", "Hey", "Hello", "What's up" };

std::string *greetings = new std::string[n];

for ( size_t i = 0; i < n; i++ )
{
greetings[i] = words[i % N];
}

return greetings;
}


int main()
{
size_t N = 50000;

std::string *greetings = greetingArray( N );

for ( size_t i = 0; i < N; i++ )
{
std::cout << greetings[i] << std::endl;
}

delete [] greetings;

return 0;
}

关于c++ - 我是否正确创建了这个字符串数组? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22697645/

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