php中const和define的区别

如题所述

define部分:
宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段。(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议。)

宏的语法为:

#define 宏名称 宏值
作为一种建议和一种广大程序员共同的习惯,宏名称经常使用全部大写的字母。

利用宏的优点:

1)让代码更简洁明了

当然,这有赖于你为宏取一个适当的名字。一般来说,宏的名字更要注重有明确直观的意义,有时宁可让它长点。

2)方便代码维护

对宏的处理,在编译过程中称为“预处理”。也就是说在正式编译前,编译器必须先将代码出现的宏,用其相应的宏值替换,这个过程有点你我在文字处理软件中的查找替换。所以在代码中使用宏表达常数,归根结底还是使用了立即数,并没有明确指定这个量的类型。

const部分

常量定义的格式为:

const 数据类型 常量名 = 常量值;
而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查。常量必须一开始就指定一个值,然后,在以后的代码中,我们不允许改变此常量的值。

两者之间的区别:
内存空间的分配上。define进行宏定义的时候,不会分配内存空间,编译时会在main函数里进行替换,只是单纯的替换,不会进行任何检查,比如类型,语句结构等,即宏定义常量只是纯粹的置放关系,如#define null 0;编译器在遇到null时总是用0代替null它没有数据类型(还有疑问请找C语言书籍看预处理部分或者看MSDN.而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查,所以const与define之间的区别在于const定义常量排除了程序之间的不安全性.
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-02
define定义全局常量,在任何地方都可以访问
const用于类成员变量定义,只能用类名访问不能更改要是初学这样显理解着就行别太钻牛角尖就行
第2个回答  推荐于2016-08-13
1、const用于类成员变量定义,一旦定义且不能改变其值。define定义全局常量,在任何地方都可以访问。
2、define不能在类中定义而const可以。
3、const不能在条件语句中定义常量
if (...) {
const FOO = 'BAR'; // invalid
}
but
if (...) {
define('FOO', 'BAR'); // valid
}
4、const采用一个普通的常量名称,define可以采用表达式作为名称。
const FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
define('BIT_' . $i, 1 << $i);
}
5、const只能接受静态的标量,而define可以采用任何表达式。
const BIT_5 = 1 << 5; //invalid
but
define('BIT_5', 1 << 5); // valid
6、const 总是大小写敏感,然而define()可以通过第三个参数来定义大小写不敏感的常量
define('FOO', 'BAR', true); www.2cto.com
echo FOO; // BAR
echo foo; // BAR
总结:
使用const简单易读,它本身是一个语言结构,而define是一个方法,用const定义在编译时比define快很多。
第3个回答  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不能在条件语句中定义常量 if (...) { const FOO = 'BAR'; \/\/ invalid } but if (...) { define('FOO', 'BAR'); \/\/ valid } 4、co...

php const和define的区别
两者之间的区别:内存空间的分配上。define进行宏定义的时候,不会分配内存空间,编译时会在main函数里进行替换,只是单纯的替换,不会进行任何检查,比如类型,语句结构等,即宏定义常量只是纯粹的置放关系,如#define null 0;编译器在遇到null时总是用0代替null它没有数据类型(还有疑问请找C语言书籍看...

php const和define的区别
(5).const只能接受静态的标量,而define可以采用任何表达式。(6).const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。

php const和define的区别
使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。(1).const用于类成员变量的定义,一经定义,不可修改。define不可用于类成员变量的定义,可用于全局常量。(2).const可在类中使用,define不能。(3).const不能在条件语句中定义常量。

phpconst和define的区别
const是在类中定义常量,define是在类外定义常量。

php define和const的区别
const:类成员变量定义,一旦定义且不能改变其值. define:定义全局常量,在任何地方都可以访问

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

php中const和define的区别
首先,毫无疑问的是,两种定义常量的方式之间存在版本差异,函数define()在PHP4和PHP5中均可使用,关键字const只能在PHP 5.3.0及其后的版本中使用。2.定义位置的区别 由于函数define()定义的常量是在执行define()函数时定义的,因此可以在函数内、循环内、if语句内等函数能够被调用的任何地方使用define...

php中const与define的使用区别 详解
const是用来在类中定义常量的,define是用来在过程代码中定义php常量的。

关于PHP面向对象中定义常量const和define
const用于类成员变量定义,一旦定义且不能改变其值。define定义全局常量,在任何地方都可以访问。define不能在类中定义而const可以,既然是面向对象了,当然是const用的多啊

相似回答