#define,const,static三种常量的区别

本文介绍了C/C++中定义常量的三种方式:#define,const和static,并详细阐述了它们之间的区别。#define实际上是预处理替换,不占用内存空间;static在编译时分配空间,作用域限制于文件或函数;const是真正的常量,不可修改,具有类型检查和内存分配。const比static更为严格,提供了更安全的常量修饰。

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

#define,const,static三种常量的区别
定义常量常用的三种方法有:#define,const,static实际上还是有很大区别。
(1)#define是预定义定义常量,其实不是常量,因为,在程序中并没有给#define的字符量开辟变量空间。#define的用法是#define  dd  100;在程序预编译的时候讲程序中的所有的dd改为100;没有类型。没有空间存放。所以在程序中是不可以改变的。为什么呢?因为根本找不到存储地址(本身就没有空间地址)。




(2)static:为什么要先讲static呢?因为static比const先出现。static是c语言时出现的。const是c++语言时出现的。const的目的是static的加强版本。为什么说是加强版本呢。这是因为作为一个常量的修饰符,static并不是完全意义上的常量修饰符。



居然可以改变,说好的是常量呢,为什么可以改变。这里使用的是vs2015编译。当然通过指针也可以修改。
(3)const:绝对的常量修饰符。不可修改。见下



果然c++更严谨,修改失败。我们尝试使用指针修改。如下


果然,不能修改,指针也不行。确实更严格。跟符合常量的定义。


综上所述,#define和const、static有本质的区别。const和static是严谨更严谨,严格更严格的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值