设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
懂的各位帮我解答下面这个c语言程序好吗 为什么答案是6 ...
返回列表
发新帖
懂的各位帮我解答下面这个c语言程序好吗 为什么答案是6不是4呢
[复制链接]
11
|
3
|
2011-5-7 18:07:42
|
显示全部楼层
|
阅读模式
#include
fun3(int x)
{
static int a=3;
a+=x;
return(a);
}
void main()
{
int k=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d\n",n);
}
回复
使用道具
举报
千问
|
2011-5-7 18:07:42
|
显示全部楼层
fun3 函数中 有一个关键字 static 定义了一个静态全局变量有以下特点:1,该变量在全局数据区分配内存;2,未经初始化的静态全局变量会被程序自动初始化为0 3,静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;可见 static不是来打酱油的第一次 调用fun3 ,a=3+2=5第二次 调用fun3 ,a=5+1=6 (静态全局变量,故值沿用原来的5)
回复
使用道具
举报
千问
|
2011-5-7 18:07:42
|
显示全部楼层
看fun3中的静态变量,静态变量在运行mian前已被初始化,且只初始化这一次首先a=3运行main调用fun3:a=a+2=5;调用fun3:a=a+1=5+1=6;(a因为是静态的,所以每次值都被保存,而不是调用fun3时初始化为3)输出结果
回复
使用道具
举报
千问
|
2011-5-7 18:07:42
|
显示全部楼层
fun3函数里面变量a被定义成静态变量:static,静态变量的作用域是整个文件,在调用时会保持原数值。第一次调用后a=5,第二次调用时a的值从5开始,而不是重新赋值成3。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行