C语言中一个关于静态变量的问题

题目如下:#include<stdio.h>main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);pri... 题目如下:
#include<stdio.h>
main()
{ int k=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
func(int a,int b)
{ static int m,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
这里面定义了2个静态变量,那么在运算的过程中是如何使用的?
展开
 我来答
ycsxm
2012-07-24 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1.4万
采纳率:0%
帮助的人:7840万
展开全部
你要记住 静态变量 的特点:
1. 定义时的初值赋值只执行初始一次;
2. 它的值是在静态区分配的,再次执行时它值并不消失;
这不很简单,它的值再次执行都是存在的;
而局部变量(自动变量)就不同了,每次重新分配,重新初始;
上面程序中,主程序中的m是局部变量,栈中分配的;
子程序中m是静态变量,静态区分配的,
这两个m是不同的变量。
纯洁的念想
2012-07-24
知道答主
回答量:30
采纳率:0%
帮助的人:22.5万
展开全部
使用后!电脑会直接瘫痪!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐酷科技
2012-07-24 · TA获得超过1905个赞
知道小有建树答主
回答量:1067
采纳率:50%
帮助的人:614万
展开全部
#include<stdio.h>
main()
{ int k=4,m=1,p;
p=func(k,m);//第一次调用fun()函数
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
func(int a,int b)//第二次调用fun函数 m,i的值是上一次fun()函数执行完了时m,i的值
{ static int m,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-24
展开全部
不太懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式