C语言中的常量与只读变量,#define与const的区别

#include中的#表明C处理器需要在编译器接手工作之前先处理这条指令。
#define 这条定义宏的语句,是不是很熟悉,这条预处理指令会在编译器编译前把源文件中使用到这个宏的地方都先展开。

  • #define NUM 12 这个定义了一个宏常量,它的处理发生编译阶段。
  • const int num = 15; 这个将变量num限制为只读,它的处理发生在程序运行时。

因为它们的值都不能够改变,都是它们的意义却是不同的。

c 复制代码
#define LEN 100
const int TOTAL = 200;
int main(){
	int a[LEN]; // 正确
	int b[TOTAL]; // 错误 
}

代码在编译时就需要确定好数组的长度,所以只能用#define定义的宏常量,const的作用是限制变量为只读,它的值只有在运行时才能够确定,因此用const的变量来指定数组长度会报错。

相关推荐
MSTcheng.5 分钟前
【C++】C++11新特性(二)
java·开发语言·c++·c++11
晓13137 分钟前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
愚者游世7 分钟前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
梵刹古音10 分钟前
【C语言】 指针基础与定义
c语言·开发语言·算法
Ekehlaft13 分钟前
这款国产 AI,让 Python 小白也能玩转编程
开发语言·人工智能·python·ai·aipy
rit843249915 分钟前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab
开源技术18 分钟前
Python GeoPandas基础知识:地图、投影和空间连接
开发语言·ide·python
Cult Of22 分钟前
Alicea Wind的个人网站开发日志(2)
开发语言·python·vue
我找到地球的支点啦27 分钟前
通信扩展——扩频技术(超级详细,附带Matlab代码)
开发语言·matlab
微小冷1 小时前
Rust异步编程详解
开发语言·rust·async·await·异步编程·tokio