static变量的理解:在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变,怎么理解
答案:4 悬赏:50
解决时间 2021-02-10 22:33
- 提问者网友:她是我的お女人
- 2021-02-10 00:18
static变量的理解:在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变,怎么理解
最佳答案
- 二级知识专家网友:你把微笑给了谁
- 2021-02-10 01:48
在你代码的基础上加上这么一句
#include
using namespace std;
int f(int);
int main()
{
int ret;
ret = f(3);
cout<<"main: ret = "<
ret = f(1);
cout<<"main: ret = "<
return 0;
}
int f(int a)
{
static int b = 2;
cout<<"f: b = "< b = b+a;
cout<<"f: b = "< return b;
}最后可以看到b只是赋初值一次,再次调用函数的时候,b还是上一次运行函数之后的值。调用过程中维持其值不变,指的是,函数结束的时候,静态变量不会消亡,还是上一次执行函数得到的值。普通变量在函数结束的时候就消亡了
#include
using namespace std;
int f(int);
int main()
{
int ret;
ret = f(3);
cout<<"main: ret = "<
cout<<"main: ret = "<
}
int f(int a)
{
static int b = 2;
cout<<"f: b = "< b = b+a;
cout<<"f: b = "< return b;
}最后可以看到b只是赋初值一次,再次调用函数的时候,b还是上一次运行函数之后的值。调用过程中维持其值不变,指的是,函数结束的时候,静态变量不会消亡,还是上一次执行函数得到的值。普通变量在函数结束的时候就消亡了
全部回答
- 1楼网友:两不相欠
- 2021-02-10 04:31
静态变量和局部变量的区别在于:
你下次调用这个函数时,它的初始值。
当你下次调用 f函数时, b的初始值将是 5
- 2楼网友:湫止没有不同
- 2021-02-10 03:05
方法之中的变量只是局部变量,并不能被方法之外所识别,所以并不能使用public,static,private,protected...之内的修饰符。
这是基本规则。
- 3楼网友:夢想黑洞
- 2021-02-10 01:56
其实很简单,static 声明的变量就是个全局变量,因为这些变量的存储空间在全局数据区
在函数中申明static只是说明语法上这个变量的访问域在函数内
当然你可以使用一个指针把这个变量从函数内取出来用 比如
int * foo_static_var_test(void)
{
static int a = 0;
std::cout << a << std::endl;
return &a;
}
int *p = foo_static_var_test(); //输出为0
*p = 100;
foo_static_var_test(); //输出为 100
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯