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的变量来指定数组长度会报错。

相关推荐
OxyTheCrack5 分钟前
简述各语言GC(垃圾回收)机制
开发语言
李昊哲小课6 分钟前
电商系统项目教程
开发语言·前端·javascript
AI科技星30 分钟前
基于双隐含量(角速度 +质量 )的全量变形公式体系-发现新公式
开发语言·人工智能·线性代数·算法·矩阵·数据挖掘
biter down41 分钟前
C++的IO流
开发语言·c++
无心水43 分钟前
【常见错误】1、Java并发工具类四大坑:从ThreadLocal到ConcurrentHashMap,你踩过几个?
java·开发语言·后端·架构·threadlocal·concurrent·java并发四大坑
Love Song残响1 小时前
MATLAB疑难杂症全攻略:从报错到优化
开发语言·matlab
risc1234561 小时前
channel.read(dest, channelPosition) 的读取大小限制
开发语言·python
这波不该贪内存的1 小时前
HTTP通信与多线程服务器实战
c语言
困死,根本不会1 小时前
Qt Designer 基础操作学习笔记
开发语言·笔记·qt·学习·microsoft