关于C++的静态变量用法

最近在看C++,碰到一个静态变量的程序,有点搞不懂,求高手解释下:
return那里返回到主函数的是a+5,然后再到主函数中继续把a=2带入计算于是2+5=7;还是说运行的时候直接把a=2带入到调用函数中计算,调用函数中计算完后直接返回一个7; 我只想知道在调用函数运行完后返回给主函数的是a+5还是7,就这么一个问题,求解释

#include <iostream>
#include <stdlib.h>
using namespace std;
int f(int a)
{auto int b=0;
static int c=3;
b=b+1;
c=c+1;
return a+b+c;
}

int main()
{int a=2,i=1;
cout<<f(a)<<" ";
cout<<endl;
system ("pause");
return 0;
}

返回的是7的
函数在调用的时候,实参是参与到函数的运算当中的。这里,你的这句表述的是正确的:“还是说运行的时候直接把a=2带入到调用函数中计算,调用函数中计算完后直接返回一个7”

这里的函数调用跟静态变量没有关系的,函数内的静态变量的用法,可以参考下面的:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。   
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。   
(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。   
(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-28
返回的是2+1+4=7
第2个回答  2011-07-28
是运行的时候直接把a=2带入到调用函数中计算,调用函数中计算完后直接返回一个7
相似回答