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文件中找到这个同名的全局变量。