define与const具体使用上有什么区别

如题所述

define在编译阶段就完成了替换,基本是不占内存,const会一直占用空间,然而define仅仅是简单的替换,容易造成错误
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-05
作为程序员的我们,经常在C++中用到const和define,但是两者具体有什么区别呢?你知道吗?
首先在定义上:用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用到该常量的地方都要进行拷贝替换;
用const float MAX = 255; 定义的常量有类型名字,存放在内存的静态区域中,在程序运行过程中const变量只有一个拷贝,而#define 所定义的宏变量却有多个拷贝,所以宏定义在程序运行过程中所消耗的内存要比const变量的大得多;
用define定义的常量是不可以用指针变量去指向的,用const定义的常量是可以用指针去指向该常量的地址的;
用define可以定义一些简单的函数,const是不可以定义函数的。具体来说,有以下几方面的区别:
1. 编译器处理方式
define – 在预处理阶段进行替换;const – 在编译时确定其值
2.类型检查
define – 无类型,不进行类型安全检查,可能会产生意想不到的错误;const – 有数据类型,编译时会进行类型检查
3.内存空间
define – 不分配内存,给出的是立即数,有多少次使用就进行多少次替换,在内存中会有多个拷贝,消耗内存大;const – 在静态存储区中分配空间,在程序运行过程中内存中只有一个拷贝
4.其他
在编译时, 编译器通常不为const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。宏替换只作替换,不做计算,不做表达式求解。宏定义的作用范围仅限于当前文件。默认状态下,const对象只在文件内有效,当多个文件中出现了同名的const变量时,等同于在不同文件中分别定义了独立的变量。如果想在多个文件之间共享const对象,必须在变量定义之前添加extern关键字(在声明和定义时都要加)。在C++ 程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。

php中const与define的使用区别 详解
1.const:类成员变量定义,一旦定义且不能改变其值.define:定义全局常量,在任何地方都可以访问.2.define:不能在类中定义,而const可以.3.const:不能在条件语句中定义常量.4.const:采用一个普通的常量名称,define可以采用表达式作为名称.5.const:只能接受静态的标量,而define可以采用任何表达式.6.const:...

const和define的区别
define宏定义和const常变量区别:1.define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。const定义的常量,在程序运行时在常量表中,系统为它分配内存。2.define定义的常量,预处理时只是直接进行了替换。所以编译时不...

const与#define作用一样吗?
define是替换,而const是常量。在某些特定的地方可能是一样的。define还可以替换关键字。

const和define的区别
1: 编译器处理不同 define宏是在预处理阶段展开,const常量是编译运行阶段使用。2:类型和安全检查不同 const常量有数据类型,而宏常量没有数据类型,仅仅是展开。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。3: 存储方式...

const和define的区别
const用于定义常量;而define用于定义宏,而宏也可以用于定义常量。都用于常量定义时,它们的区别有:1、const生效于编译的阶段;define生效于预处理阶段。预处理在编译之前,预处理器将源代码中的宏统一替换为指定的字符。从语义上讲,const是声明一个不可修改的数据,而define则是在对源代码进行替换。2...

#define和const定义的问题
define 定义的是宏,不是变量。有什么区别呢?如这个程序中,使用 define 时,3.1415 会直接替换掉程序中的 PI,注意是原封不动的替换,相当于是写的 return 3.1415*i*i 。而 const 是定义常量,其实就是值不能被改变的变量,和宏是不一样的。因此,const 只是对变量的修饰,你直接用 const P...

关于Const和Define的区别
一、表达意思不同 1、Const:n. 常量,常数; (Const)人名;(罗)康斯特 2、Define:vt. 定义;使明确;规定、n. (Define)人名;(英)德法恩;(葡)德菲内 二、词性不同 1、Const:通常作名词。例句:For structures and unions to be modifiable lvalues, they must not have any members with...

php const和define的区别
(2).const可在类中使用,define不能。(3).const不能在条件语句中定义常量。(4).const采用一个普通的常量名称,define可以采用表达式作为名称。(5).const只能接受静态的标量,而define可以采用任何表达式。(6).const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定...

const与#define的区别
const是定值常数 define可以定义恒等表达式,是用后一个表达式直接替换前表达式

php const和define的区别
最突出的一个使用的区别为define不仅可以定义一个固定的值(数字、字符等)还可以定义一个代码段,而const只能是一个标量;第二个明显的区别为:define在编译时只是进行简单的替换,没有类型等错误检查,而const则会,编译器会进行一些必要的类型检查;另外在php中,有这样一个规定,在5.3之前,const...

相似回答