static的一用法?

sxb17 2006-08-20 04:13:27
#include "stdio.h"
#include "conio.h"
main()
{
int i,num;
num=2;
for(i=0;i<3;i++)
{
printf("\40: The num equal %d \n",num);
num++;
{
static int num=1;
printf("\40:The internal block num equal %d\n",num);
num++;
}
}
getch();
}
在这里static()是什么用法,不解?请详细解释一下!
...全文
370 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mu_yang 2006-08-25
  • 打赏
  • 举报
回复
{
static int num=1;
printf("\40:The internal block num equal %d\n",num);
num++;
}
static int num=1;这句,在初始化后不再有任何作用
每次进入这个模块,不会再执行 num=1;num的值被保留


对应的看一下没有static的情况
{
int num=1;
printf("\40:The internal block num equal %d\n",num);
num++;
}
每次进入模块,都建立一个num变量并被赋初值为1(与上面的一直保留是不同的)
deppew123 2006-08-21
  • 打赏
  • 举报
回复
四个字,动态存储
SnowOnSahara 2006-08-21
  • 打赏
  • 举报
回复
第一个num编译之后是num1,第二个是num2,num1是进入函数main的时候在调用栈上动态分配,但是num2是在整个程序开始时初始化,运行期间一直存在,只是别的地方无法访问。
  • 打赏
  • 举报
回复
同意楼上
补充:
num=2;
for(i=0;i<3;i++)
{
printf("\40: The num equal %d \n",num); //num=2,3,4
num++; //局部变量
{
static int num=1;
printf("\40:The internal block num equal %d\n",num);//num=1,2,3
num++;//局部静态变量
}
mgdcs 2006-08-21
  • 打赏
  • 举报
回复
static指局部静态变量,初始化后,值一直保存
{
static int num=1;
printf("\40:The internal block num equal %d\n",num);
num++;
}
局部静态变量num的作用范围是这一对大括号之间
飞哥 2006-08-21
  • 打赏
  • 举报
回复
只执行一次,相当于全局变量保存
声明的变量在全局存储区分配空间
anyue417 2006-08-20
  • 打赏
  • 举报
回复
给个关于static深入点的文章:
http://blog.sina.com.cn/u/4a317b79010004su
tiantang3gm 2006-08-20
  • 打赏
  • 举报
回复
静态变量虽然定义在局部,使用范围也是局部,但是初始化应该是在进入main()之前
不知道对不对?
请大家说明看法。
sxb17 2006-08-20
  • 打赏
  • 举报
回复
也就是说,这里的num是两个不同的变量,{}内的为局部变量,只适用于{}内且为静态的。而{}外的num为动态的变量,只是用相同的变量名而已,其实是两个完全不同的变量。这么理解对吗?
xiaoyao888 2006-08-20
  • 打赏
  • 举报
回复
不一样,因为加了{},就成了局部变量了,只能在{}里使用,在{}外使用的是前面声明的,不过生命周期是直到程序结束
sxb17 2006-08-20
  • 打赏
  • 举报
回复
static int num=1;
printf("\40:The internal block num equal %d\n",num);
num++;
这里的num和上面的num不一样吗?为什么呢?这里定义的是全局变量吗?
seas110 2006-08-20
  • 打赏
  • 举报
回复
同一个源文件里的全局函数.......

不知道这个解释对不...呵呵.
seas110 2006-08-20
  • 打赏
  • 举报
回复
static的值会一直保存.....直至程序结束.

Test()
{
static int i = 1;
i++;
}
如:每次调用这个函数,i的值都会在上一次的基础上再加1,而不是每次都先初始化为1,再加1

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧