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

最近在看C++,碰到一个静态变量的程序,有点搞不懂,求高手解释下:return那里返回到主函数的是a+5,然后再到主函数中继续把a=2带入计算于是2+5=7;还是说运行的... 最近在看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;
}
展开
 我来答
匿名用户
2011-07-28
展开全部
返回的是7的
函数在调用的时候,实参是参与到函数的运算当中的。这里,你的这句表述的是正确的:“还是说运行的时候直接把a=2带入到调用函数中计算,调用函数中计算完后直接返回一个7”

这里的函数调用跟静态变量没有关系的,函数内的静态变量的用法,可以参考下面的:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。   
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。   
(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。   
(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
军军106
2011-07-28 · TA获得超过453个赞
知道小有建树答主
回答量:1747
采纳率:0%
帮助的人:753万
展开全部
返回的是2+1+4=7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lantoumi
2011-07-28
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
是运行的时候直接把a=2带入到调用函数中计算,调用函数中计算完后直接返回一个7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式