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

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

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


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

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

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

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

果然c++更严谨,修改失败。我们尝试使用指针修改。如下
#define,const,static三种常量的区别

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


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