
c语言中为什么要用static声明变量。它的具体作用是什么,请举例说明
展开全部
如果static申明的是全局变量,那么这个全局变量只能在这个编译单元(文件)使用,利于模块封装。
如果static申明的是局部变量,那么函数返回时将不会释放该变量空间。
例如,main.c里面定义了一个全局变量static int a;那么另外一个文件code.c将不能使用它,即使使用extern int a来申明它。
定义一个函数void func() {static int a = 0; a++;}那么每次执行该函数a+1,即第一次调用func,a为1,第二次为2,第三次为3……和全局变量很像,但其他函数是不能使用a 的
如果static申明的是局部变量,那么函数返回时将不会释放该变量空间。
例如,main.c里面定义了一个全局变量static int a;那么另外一个文件code.c将不能使用它,即使使用extern int a来申明它。
定义一个函数void func() {static int a = 0; a++;}那么每次执行该函数a+1,即第一次调用func,a为1,第二次为2,第三次为3……和全局变量很像,但其他函数是不能使用a 的
追问
c语言也能支持继承?而且还是以模块而不是类继承?
展开全部
//静态变量的生存期是整个程序的运行期,它被定义后就一直存在,要保留某个函数的中间结果,就可以用静态变量,比如下面这个程序
#include <stdio.h>
int f()
{
static int i=1;
printf("%d ",i);
i++;
return i;
}
int main()
{
f();
f();
f();
f();
return 0;
}
1 2 3 4 请按任意键继续. . .
#include <stdio.h>
int f()
{
static int i=1;
printf("%d ",i);
i++;
return i;
}
int main()
{
f();
f();
f();
f();
return 0;
}
1 2 3 4 请按任意键继续. . .
追问
意思是static定义的变量能当全局变量用?那我们可以只用全局变量就ok了啊,那它有存在的价值吗?
追答
不是的,你把生存期和作用域混淆了,它的作用域仍然只是定义它的函数空间,就像这个例子里的i,只有在f()函数里才能访问,但i一直到程序结束才消失
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如你在一个函数中定义了一个i,
你想在每次调用的时候,显示了共调用了多少次,
而且你又不想用全局变量,
那么你就要定义成static类型的。
如果你实现了我说的功能,那你就可以理解static的作用了。
你想在每次调用的时候,显示了共调用了多少次,
而且你又不想用全局变量,
那么你就要定义成static类型的。
如果你实现了我说的功能,那你就可以理解static的作用了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大家说的好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询