2016-03-15 39 views
-1

每次我运行下面的代码时,都会得到相同的结果,这是一个错误,指出“直径”是未初始化的局部变量。我需要的是在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; 
} 
+0

请提取一个简单的例子,你的问题是没有它的话题。也就是说,在不同函数中声明的名为'diameter'的变量是不同的对象。即使调用两次的同一函数中的变量也是不同的对象。 –

回答

2

的被传递给calcSqFeetdiameter不是正被拍摄的输入相同diametermain中未使用从getDiam返回的值。

您应该将main中的getDiam呼叫更改为diameter=getDiam();

+0

阅读[范围](http://en.cppreference.com/w/cpp/language/scope)。 – anukul

-1

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

您缺少的东西是将getDiam的结果赋值给main函数中的diameter变量。

要学的课:实际上总是编译器给你的错误或警告信息。包括行号和潜在的功能名称。帮助您找到错误/警告的实际位置。

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