C语言存储类关键字

1、static

创新互联建站是一家集网站建设,松山企业网站建设,松山品牌网站建设,网站定制,松山网站建设报价,网络营销,网络优化,松山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

这个关键字有三种用法:

(1)第一种是用来修饰局部变量,使之成为静态局部变量;静态局部变量存储在数据段/bss段中,作用域是代码块作用域,生命周期是程序生命周期,链接属性是无连接。静态局部变量只初始化一次,以后使用时的值是上次使用后的值(类似全局变量)

(2)第二种是用来修饰全局变量,使之成为静态全局变量;静态全局变量存储在数据段/bss段中,作用域是文件作用域,生命周期是程序生命周期,链接属性是外链接。static修饰的全局变量只在定义它的源文件内有效,在同一源程序的其它源文件内不可使用,利用此特性可以避免多文件变量重名的问题。

(3)第三种是用来修饰函数,使之成为静态函数;静态全局变量存储在数据段/bss段中,作用域是文件作用域,生命周期是程序生命周期,链接属性是内链接。static修饰的函数只在定义它的源文件内有效,在同一源程序的其它源文件内不可使用,利用此特性可以避免多文件函数重名的问题。

(4)在多个源文件的程序中,只在一个源文件使用的函数或者全局变量应该加static关键字加以说明。

2、auto

这个关键字只有一种用法:

只能用来修饰局部变量,使之成为自动局部变量,自动局部变量存储在栈上,其实我们平常定义的局部变量就是自动局部变量,只是我们把auto关键字省略了;可见,定义普通的局部变量默认就是auto关键字修饰的局部变量。

3、extern

(1)这个关键字常用来声明全局变量;目地是在多文件项目中在a.c中定义全局变量而在b.c中使用这个全局变量;

(2)因为C语言程序编译时是以单个.c文件为单位编译的,如果不声明直接使用,编译器就会报错误,解决方案就是使用extern关键字声明(注意声明时不能赋值,否则会出现错误:重复定义)

(3)应该在b.c中使用这个全局变量之前声明这个全局变量,告诉编译器我在别的文件中定义了这个全局变量,并且原型和声明一样,这样链接时链接器就会去别的.o文件中找到这个同名的全局变量。


文章名称:C语言存储类关键字
文章转载:http://azwzsj.com/article/pgppec.html