C语言小知识点-类型限定符

类型限定符:(对类型进行额外的说明)
auto
用于定义自动申请、自动释放内存的变量(局部变量),不加就代表加了(与singed类似)
注意:在C11语法标准中用于自动类型识别
auto num = 10; //int
auto num = 3.13;//double
注意:不用用它修饰全局变量


extern
用于声明外部变量,意思是告诉编译器此变量在程序的其他地方已经定义了,先让程序通过编译,如果在链接时找不到该变量依然会报错(哪里要用就在哪里声明)
不建议在extern时赋值,它只是声明

★static(使函数的变量在函数的本次调用的值在下一次被调用的时候还能用 )(对初始化有用,对赋值无效)
改变存储位置:
改变局部变量的存储位置,由stack改为data(初始化)或者bss(未初始化)
延长生命周期:
延长局部变量的生命周期,直到程序结束才释放
限制作用范围:
限制全局变量的使用范围,限制只能在本文件内使用
注意:使用static修饰全局变量,可以防止该变量被别的文件使用,以及防止命名冲突

★const
"保护"变量的值不被显式地修改(只防君子不防小人)
注意:如果通过内存进行修改,还是可以改的(指针)
注意:使用const修饰data段数据,那么该数据会存储到text段中,如果强制修改会段错误

volatile
C编译器会对普通变量的取值进行"取值优化",只要在使用变量过程中该变量没有显式改变,那么编译器会直接使用上一次的结果,而不会每次都去内存读取数据
加上volatile修饰,让编译器不要对该变量进行"取值优化"
一般在驱动编程、硬件编程、多线程编程时使用
volatile int num = 10;
if(num == num)
{
// 可能为假
}

register
存储介质:
硬盘->内存->高级缓存->寄存器->CPU
申请把变量的存储介质由内存改为寄存器,但是由于寄存器数量有限,不一定百分百成功
注意:寄存器变量不能取地址

typedef (重新定义一个类型)
类型重定义
在定义变量前,加上typedef,那么原本的变量名就变成了这种数据类型,可以像数据类型一样定义变量
typedef int num;//此时num为一个类型,为int
num n1;

posted @   冲他丫的  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示