c++静态局部变量初始化问题
答案:1 悬赏:10
解决时间 2021-01-21 10:28
- 提问者网友:心如荒岛囚我终老
- 2021-01-20 09:45
c++静态局部变量初始化问题
最佳答案
- 二级知识专家网友:夜风逐马
- 2021-01-20 10:48
//--------------这里的a是什么时候初始化的,怎么看不到
这里的a,没被初始化
对于全局变量,如果没初始化的值,C++,可能默认把它们清零。
而C语言,则不去管它。如下:
#include<stdio.h>
int i=1; // i 为全局变量,具有静态生存期。
void main(void)
{
static int a; // a为静态局部变量,具有全局寿命,局部可见
//--------------这里的a是什么时候初始化的,怎么看不到
int b=-10; // b, c为局部变量,具有动态生存期。
int c=0;
void other(void);
printf("---MAIN---\n");
printf("i:%d a:%d b:%d\n",a,b,c);
c=c+8; other();
printf("---MAIN---\n");
printf("i:%d a:%d b:%d\n",a,b,c);
i=i+10; other();
getchar();
}
void other(void)
{
static int a=2;
static int b;
// a,b为静态局部变量,具有全局寿命,局部可见,只第一次进入函数时被初始化。
int c=10; // C为局部变量,具有动态生存期,每次进入函数时都初始化。
a=a+2; i=i+32; c=c+5;
printf("---OTHER---\n");
printf("i:%d a:%d b:%d\n",a,b,c);
b=a;
}
输出:
---MAIN---
i:0 a:-10 b:0
---OTHER---
i:4 a:0 b:15
---MAIN---
i:0 a:-10 b:8
---OTHER---
i:6 a:4 b:15
这里的a,没被初始化
对于全局变量,如果没初始化的值,C++,可能默认把它们清零。
而C语言,则不去管它。如下:
#include<stdio.h>
int i=1; // i 为全局变量,具有静态生存期。
void main(void)
{
static int a; // a为静态局部变量,具有全局寿命,局部可见
//--------------这里的a是什么时候初始化的,怎么看不到
int b=-10; // b, c为局部变量,具有动态生存期。
int c=0;
void other(void);
printf("---MAIN---\n");
printf("i:%d a:%d b:%d\n",a,b,c);
c=c+8; other();
printf("---MAIN---\n");
printf("i:%d a:%d b:%d\n",a,b,c);
i=i+10; other();
getchar();
}
void other(void)
{
static int a=2;
static int b;
// a,b为静态局部变量,具有全局寿命,局部可见,只第一次进入函数时被初始化。
int c=10; // C为局部变量,具有动态生存期,每次进入函数时都初始化。
a=a+2; i=i+32; c=c+5;
printf("---OTHER---\n");
printf("i:%d a:%d b:%d\n",a,b,c);
b=a;
}
输出:
---MAIN---
i:0 a:-10 b:0
---OTHER---
i:4 a:0 b:15
---MAIN---
i:0 a:-10 b:8
---OTHER---
i:6 a:4 b:15
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯