在函数中初始化局部变量的问题

时间:2016-03-15 06:49:10

标签: c++

每次我运行下面的代码时,我得到相同的结果,这是一个错误,表明"直径"是一个未初始化的局部变量。我需要的是在getDiam()函数中输入的输入被初始化为直径。 我已经尝试过另外两种方式,包括:

double getDiam()
{
double diameter;
double input;
cout << "Please enter the diameter of your floor: ";
cin >> input;
diameter = input;
return diameter;
}

这^^不起作用。

//prototypes
double getDiam();
double calcSqFeet(double);
const double PI = 3.14;

int main()
{
double diameter, 
       squareFeet;

getDiam();
calcSqFeet(diameter);

}
double getDiam()
{
double diameter = 0;
cout << "Please enter the diameter of your floor: ";
cin >> diameter;
return diameter;
}

double calcSqFeet(double diameter)
{
double radius = diameter / 2;
double squareFeet = PI * radius * radius;
return squareFeet;
}

2 个答案:

答案 0 :(得分:2)

传递给diameter的{​​{1}}与输入的calcSqFeet不同。 您diameter的返回值未在getDiam中使用。

您应该将main中的getDiam来电更改为main

答案 1 :(得分:-1)

如果您阅读了警告消息(我怀疑这是一个错误,除非您启用了“警告为错误”选项),您将看到它与diameter函数中getDiam的使用无关。它位于main函数中,在diameter的调用中确实使用了同名的变量calcSqfeet而没有初始化。

您遗失的是将getDiam的结果分配给diameter函数中的main变量。

需要学习的课程:实际上读取编译器提供给您的错误或警告消息。包括行号和潜在的函数名称。帮助您找到错误/警告的实际位置。

要学习的第二课:函数中的局部变量实际上只是该函数的局部变量。两个名称相同但功能不同的变量仍然是两个不同的变量,彼此之间没有任何联系。