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

相关推荐
ZEERO~8 小时前
@dataclass的作用
开发语言·windows·python
!停8 小时前
C语言单链表
c语言·数据结构·算法
南行*8 小时前
C语言Linux环境编程
linux·c语言·开发语言·网络安全
Morwit8 小时前
Qt qml创建c++类的单例对象
开发语言·c++·qt
古城小栈8 小时前
Rust 已经自举,却仍需GNU与MSVC工具链的缘由
开发语言·rust
jarreyer8 小时前
数据项目分析标准化流程
开发语言·python·机器学习
你怎么知道我是队长8 小时前
C语言---printf函数使用详细说明
c语言·开发语言
liulilittle8 小时前
俄罗斯访问欧洲国际线路优化
开发语言·网络·信息与通信·ip·通信·俄罗斯·莫斯科
陈小桔8 小时前
logging模块-python
开发语言·python
消失的旧时光-19438 小时前
函数指针 + 结构体 = C 语言的“对象模型”?——从 C 到 C++ / Java 的本质统一
linux·c语言·开发语言·c++·c