7-3 存储类相关的关键字

本文详细介绍了C语言中与存储类相关的关键字,包括auto、static、register、extern、volatile、restrict和typedef的用法和特点。auto用于局部变量,static可修饰局部变量和全局变量,分别产生静态局部变量和静态全局变量,register尝试将变量存储在寄存器以提高效率,extern用于声明全局变量,volatile指示变量可能被外部因素改变,restrict则在C99中引入,用于告知编译器指针不会重叠。
摘要由CSDN通过智能技术生成

7.3.1 auto

(1)auto关键字在C语言中只有一个作用,那就是修饰局部变量。
(2)auto修饰局部变量,表示这个局部变量是自动局部变量,自动局部变量分配在栈上。(既然在栈上,说明它如果不初始化那么值就是随机的,脏的…)
(3)平时定义局部变量时就是定义auto的,只是省略auto关键字而已。可见,auto的局部变量其实就是默认定义的普通的局部变量。

7.3.2 static

(1)static关键字在C语言中有2种用法,而且这两种用法彼此没有任何关联、完全是独立的。其实当年本应该多发明一个关键字,但是C语言的作者觉得关键字太多不好,于是给static增加了一种用法,导致static一个关键字竟然有两种截然不同的含义。
(2)static的第一种用法是:用来修饰局部变量,形成静态局部变量。要搞清楚静态局部变量和非静态局部变量的区别。本质区别是存储类不同(存储类不同就衍生出很多不同):非静态局部变量分配在栈上,而静态局部变量分配在数据段或者bss段上。
(3)static的第二种用法是:用来修饰全局变量,形成静态全局变量。要搞清楚静态全局变量和非静态全局变量的区别。区别是在链接属性上不同,讲到链接属性时详细讲。
分析:
1、静态局部变量在存储类方面和全局变量一样。
2、静态局部变量在生命周期和全局变量一样。
3、静态局部变量和全局变量的区别是:作用域、链接属性。静态局部变量作用域是代码块作用域(和普通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非主流的豆瓣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值