c语言中的static,c语言中的static的作用

kodinid 21 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言中的static问题,于是小编就整理了5个相关介绍c语言中的static的解答,让我们一起看看吧。

  1. static在c语言中的用法?
  2. static是什么意思?
  3. C语言static可以用什么代替?
  4. c语言char和staticchar的区别?
  5. c语言自己写的头文件里面的函数定义为什么要加static?

static在c语言中的用法?

在 C 语言中,static 关键字不仅可以用来修饰变量,还可以用来修饰函数。在使用 static 关键字修饰变量时,我们称此变量为静态变量。

静态变量的存储方式与全局变量一样,都是静态存储方式。但这里需要特别说明的是,静态变量属于静态存储方式,属于静态存储方式的变量却不一定就是静态变量。例如,全局变量虽然属于静态存储方式,但并不是静态变量,它必须由 static 加以定义后才能成为静态全局变量。

c语言中的static,c语言中的static的作用-第1张图片-安济编程网
图片来源网络,侵删)

static是什么意思?

在C语言中,static关键字的作用如下:

1、在修饰变量的时,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。

2、static修饰全局变量的时,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。

c语言中的static,c语言中的static的作用-第2张图片-安济编程网
(图片来源网络,侵删)

3、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。

C语言static可以用什么代替?

在C语言中,static关键字可以用其他方式来相同的功能。可以使用全局变量来替代静态变量,或者使用函数内的static变量来保持其作用域仅限于该函数。

此外,可以使用宏定义来替代静态常量,或者使用局部变量和指针模拟静态数组的功能。

c语言中的static,c语言中的static的作用-第3张图片-安济编程网
(图片来源网络,侵删)

另外,也可以通过多文件编程来达到静态函数和静态全局变量的效果,将其声明为static并将其定义放在单独的源文件中,然后在需要的文件中引用。总之,虽然C语言中没有直接的替代方法,但是可以通过不同的方式来实现相同的功能。

最主要有两点用途。

1. 让一个变量长期有效,而不管其是在什么地方被申明。比如:

int fun1()

{

static int s_value = 0;

....

}

那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(请注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。

2.避免多个文件使用了相同的变量名而导致冲突

c语言char和staticchar的区别

char和 static char的区别在于变量的生命周期,char 声明的变量是动态变量,static char声明的变量是静态变量。有以下特点

1.静态全局变量作用域为当前文件,从定义/声明位置到文件结尾,生命周期为从程序运行到程序退出,即贯穿整个运行时间,无显式初始化时默认初始化值为0。

2.动态全局变量作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。生命周期为从程序运行到程序退出,即贯穿整个运行时间。无显式初始化时默认初始化值为0

c语言自己写的头文件里面的函数定义为什么要加static?

表示是静态函数只能在本文件调用不能在同工程中,其它C文件调用使用static可以避免不想被其它模块调用的函数调用同时,不同文件中的static函数可以重名减少命名难度

到此,以上就是小编对于c语言中的static的问题就介绍到这了,希望介绍关于c语言中的static的5点解答对大家有用。

标签: 变量 static 静态