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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:C语言存储类关键字-创新互联
网页路径:http://myzitong.com/article/iegsj.html