C语言之extern、const、volatile

本文详细解释了C语言中的extern、const和volatile三个关键字的作用及用法。extern用于声明外部文件中的全局变量或函数;const用于定义不可变的常量;volatile用于标记可能被外部因素改变的变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

extern:

  extern修饰变量,声明该变量为外部文件的全局变量。若使用外部全局变量,必须用extern声明。

  extern修饰函数,声明该函数为外部函数。extern修饰的函数形参必须与原函数一致,否则可能导致传参出错,且编译器不会报警。建议声明外部函数省略掉extern。

 

const:

  定义常量,即用const声明的变量值不能被修改。

  const char* p, char const* p, char* const p的区别:

    C语言中const不能修饰*,因此const char* pchar const* p等价,均表示定义一个指向字符常量的指针,即*p为常量,*p不能被修改。

    而char* const p表示定义一个指向字符的常量指针,即p为常量,不能被修改,*p可以改变。

 

volatile:

  volatile修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其他线程等,遇到volatile声明的变量,编译器对访问该变量的代码不再进行优化,从而可以提供对特殊地址的稳定访问。

  例如:int i=1;if(i>0)...else... 编译器会认为在if判断前i赋值为1,i>0恒成立,因此编译器会优化掉else的语句以节省空间。

     volatile int i=1;if(i>0)...else... volatile告知编译器变量i可能被未知因素更改,i>0不一定成立,因此编译器会完整编译。

 

转载于:https://www.cnblogs.com/supernalsnow/p/5577448.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值