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

被折叠的 条评论
为什么被折叠?



