专业编程基础技术教程

网站首页 > 基础教程 正文

c++「 static(静态)变量有什么作用」

ccvgpt 2024-10-12 13:55:51 基础教程 6 ℃

与局部变量和全局变量的区别:

a.static全局变量和普通全局变量的区别在于static全局变量只初始化一次,这样做的目的是为了防止在其他文件单元被引用

c++「 static(静态)变量有什么作用」

b.static局部变量和普通局部变量的区别是static局部变量只被初始化一次,下一次运算依据上一次的结果值。

c.static函数与普通函数的区别在于作用域不一样,static函数只在一个源文件中有效,不能被其他源文件使用。

d.为什么static变量只初始化一次:

对于所有对象(不仅仅是静态对象),初始化都只有一次,而由于静态变量具有记忆功能,初始化后一直都没有被销毁,都会保存在内存区域内,所以不会再次初始化。

#include<stdio.h>
void fun(int i)
{
    static int value=i++; //这条语句是定义语句
    printf("%d\n",value);
}
int main()
{
    fun(0);
    fun(1);
    fun(2);
    return 0;
}

程序每次都输出0,是因为value是静态类型,只会定义一次,也就是说不管调用func()这个函数多少次,static int value = i++;这个定义语句只会在第一次调用的时候执行,由于第一次执行的时候i=0,所以value也就被初始化为0了,以后调用func()都不会再执行这条语句了。

e.在头文件中定义静态变量是否可行?为什么?

不可行,如果在头文件中定义静态变量,会造成资源浪费的问题,同时也可能引起程序错误,因为如果在使用了这个头文件的每个c语言文件中定义静态变量,按照编译步骤,在每个头文件中都存在一个静态变量,从而会引起空间浪费和程序错误,所以不推荐在头文件中定义任何变量,当然也包括静态变量。


最近发表
标签列表