C语言中的static关键字

在C语言中,"static"既可用于修饰函数,也可用于修饰变量,细细总结起来有以下几个功能:

1.static修饰函数。在工程中如果包含多个源文件,声明函数时加上static则表示仅将该函数的作用范围限定于本文件,对外部源文件是不可见的。

2.static修饰局部变量。一般而言,局部变量存储于动态存储区,如果局部变量加上static修饰,则将此局部存储于静态存储区,在程序的整个生命周期都有效。

3.static修饰全局变量。同1类似,如果工程中包含多个源文件,用static声明的全局变量的作用于将仅限于本文件,对外部不可见,其他性质同普通全局变量相同。

C语言中的static关键字,布布扣,bubuko.com

时间: 2024-08-08 13:57:31

C语言中的static关键字的相关文章

C语言中,static关键字作用

static修饰变量 1 在块中使用static修饰变量 它具有静态存储持续时间.块范围和无链接. 即作用域只能在块中,无法被块外的程序调用:变量在程序加载时创建,在程序终止时结束. 它只在编译时初始化一次.如果没有显式初始化,默认初始化为0. #include <stdio.h> void trystat(void); int main(void) { int count; for (count = 1; count <= 3; count++) { printf("Here

转:C语言中的static变量和C++静态数据成员(static member)

转自:C语言中的static变量和C++静态数据成员(static member) C语言中static的变量:1).static局部变量        a.静态局部变量在函数内定义,生存期为整个程序运行期间,但作用域与自动变量相同,只能在定义该变量的函数内使用.退出该函数后, 尽管该变量还继续存在,但不能使用它.        b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值.而对自动变量不赋初值,则其值是不定的.2).static全局变量        全局变量本身就是静

C语言中的volatile关键字

说明: ******一个被volatile关键字修饰的变量可能会被意想不到的改变,本意就是"易变的". ******对于被volatile修饰的变量,当编译器在编译的时候不会去假设该变量的值 ******对于被volatile修饰的变量,当优化器优化时,必须每次都小心的重新读取该变量的值,而不能使用寄存器里的备份. 使用volatile关键字的几种情况: ******第一种情况:并行设备中的状态寄存器(当不同设备访问时,状态可能会随时变化的,所以要用volatile关键字修饰) ***

C语言中的static

原理 C语言中的static可用来改变变量的作用域和生存期以及函数的作用域,该关键字可以用来修饰函数的定义和声明,以及变量的定义. 用static修饰函数定义,表示该函数只在本文件有效(定义所在的文件),其它文件对该函数不可见. 用static修饰函数外的变量定义,表示该变量只在本文件有效(定义所在的文件),其它文件对该变量不可见. 用static修饰函数内的变量定义,表示该变量在多次函数调用间一直有效.它的作用域仍然是函数,但生存期是整个程序的生存期 用static修饰函数声明,表示该函数的定

C语言中的register关键字

在C语言中的register修饰的变量表示将此变量存储在CPU的寄存器中,由于CPU访问寄存器比访问内存快很多,可以大大提高运算速度.但在使用register时有几点需要注意. 1.用register修饰的变量只能是局部变量,不能是全局变量.CPU的寄存器资源有限,因此不可能让一个变量一直占着CPU寄存器. 2.register变量一定要是CPU可以接受的值. 4.不可以用&运算符对register变量进行取址. 5.register只是请求寄存器变量,不一定能够成功. C语言中的registe

[整理]C语言中的static静态对象

1.说明外部对象(静态外部变量和静态函数)    (1)static 用于说明外部变量或函数,使该对象的作用域限定为被编译原文件的剩余部分,即从对象说明开始到所在源文件的结束部分:    (2)被static说明的外部对象对于其他的源文件是隐藏的,也就是说其他源文件无法访问得到:    (3)不会和同一程序的其他源文件中的同名的外部对象发生命名冲突. 2.说明内部变量(静态内部变量)    (1)和自动变量一样,作用域为某个特定的函数:    (2)和自动变量不同的是,不管其所在的函数是否被调用

C语言中的sizeof关键字

说明: ******C语言中的sizeof是一个关键字,也是一个操作符,并不是一个函数,用来计算某一变量,或数据类型所占用的内存字节数. ******sizeof有三种使用方式: ***sizeof(变量名)    (加括号) ***sizeof  变量名  (不加括号) ***sizeof(数据类型) C语言中的sizeof关键字

黑马程序员--C语言中的static

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1. 全局静态变量 在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量. 1. 内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在) 2. 初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化) 3. 作用域:全局静态变量在声明他的文件之外是不可见的.准确地讲从定义之处开始到文件结尾. 定义全局静态变量的好处: 不会

C语言中的static 详细分析

转自: http://blog.csdn.net/keyeagle/article/details/6708077 google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大.所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之. C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源程序中定义一次,如果有重