返回一个带有随机选项和局部变量的 char 函数
return a char function with random options and local variables
我创建了一个单元测试工具来测试我的程序。我希望它能够随机测试每次运行,但我不确定如何做到这一点。这是我的想法,但我陷入了下一步该怎么做,任何指导将不胜感激。
int main (void)
{
int testNumber = 1; //for testing
char carName[] = "";
double carCost = 0;
carName = carChosen (testNumber);
carCost = assessCost (carName); //assessCost takes in the car name and checks what cost of the car will be (error checking so only certain cars can be chosen)
return 0;
}
"testNumber"通常会随着时间的推移而播种,以创建从 1 到 15 的不同数字,但在这种情况下,它将是"1"进行测试。
这是我遇到麻烦的下一点。在此函数中,将有 15 种不同的汽车选项,它将根据随机创建的数字返回一个。
char carChosen (int randNum)
{
char carOne[] = "Honda";
char carTwo[] = "Ford";
if (randNum == 1)
{
return carOne; //local variables, not going to work...
}
else if (randNum == 2)
{
return carTwo; // Again, these return's are here to better represent what I'm trying to create but failing to do so..
}
}
我知道您不能返回局部变量,我该怎么办?
void carChosen (int randNum, char * out)
{
char carOne[] = "Honda";
char carTwo[] = "Ford";
if (randNum == 1)
{
strcpy(out, carOne);
}
else if (randNum == 2)
{
strcpy(out, carTwo);
} //.. handle other cases
}
呼叫喜欢
char carName[MAX_LEN];
carChosen (testNumber, carName);
此外,如果您有很多条件要测试,也许最好使用 switch
而不是嵌套if..else
。
我以为是C在看代码,如果你使用C++,你可以从你的函数中返回std::string
对象而没有任何问题。
正如其他人指出的那样,您的代码看起来像 C 代码。 如果你想使用C++,那么请阅读std::string并使用它。
如果你想继续你的方法(这在很大程度上是一种类似C的方法),那么你需要更好地了解C字符串是如何工作的。 即,它们如何存储在内存中以及char
与char *
有何不同与char array[]
不同。
现在把大部分放在一边,我基于您的示例代码的第一个猜测是,您实际上不会修改字符串的内容。 您只需要字符串的内容,但不会更改它们。 如果这是准确的,则可以使用常规char *
变量来保存指向字符字符串的指针。 您只需要一个字符串副本,因此您可以传递指向该副本的指针,每个人都可以从该指针读取。 执行此操作的一种快速方法是直接使用字符串文本。
const char* carChosen (int randNum)
{
if (randNum == 1)
{
return "Honda";
}
else if (randNum == 2)
{
return "Ford";
}
else
{
return "Audi";
}
}
请注意,我们将返回一个const char *
。 const
只是指示我们不会修改指向的字符串。 我们绝对不想这样做,因为它指向字符串文字(不允许修改)。 一旦你得到了carSelected返回const char *
,你可以将其传递给其他函数,例如assessmentCost。
- 使用的未初始化局部变量'Quick'
- 修复未初始化的局部变量错误
- 局部变量保留函数中的值
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?
- Gnuplot_i.hpp C++接口绘制局部变量而不是文件
- 如何在函数外部访问函数中局部变量的值?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++中静态方法的局部变量范围
- 未初始化的局部变量错误甚至认为我初始化了它(C++)
- 离开范围后如何保护局部变量的值?
- 局部变量名称冲突
- C++ lambda:如何'freeze'局部变量的值?
- 我应该使我的局部变量常量还是可移动的
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 返回对局部变量 - C++ 的引用
- 是否可以影响 C++ 中回调函数的局部变量?
- 警告 C4101 未引用的局部变量
- 返回一个带有随机选项和局部变量的 char 函数