首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP常量defineconst的区别详解

可以用define()函数来定义常量。在php5.3.0以后,可以使用const关键字在类定义的外部定义常量,先前版本const关键字只能在类(class)中使用。...常量变量有如下不同: 1、常量前面没有美元符号($) 2、常量只能通过define()函数定义,而不能通过赋值语句 3、常量可以不用理会变量的作用域在任何地方定义访问 4、常量一旦定义就不能重新定义或取消定义...问:在php定义常量时,constdefine的区别? 答:使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。...php const FOO = 'BAR'; for ($i = 0; $i < 32; ++$i) { define('BIT_' . $i, 1 << $i); } ?...php const BIT_5 = 1 << 5; // 无效的invalid define('BIT_5', 1 << 5); // 有效的valid ?

1.4K10

PHP定义常量的区别,define() 与 const

正文 在PHP5.3,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define('FOO','BAR'); 这两种方式的根本区别在于...不过在PHP5.6之后const也可以接受常量的表达式了: const BIT_5 = 1 << 5; // 在PHP5.6之后有效,之前无效 define('BIT_5', 1 << 5); /...而define目前是不支持这一功能的,但是该功能会在PHP7被实现: const FOO = [1, 2, 3]; // 在PHP 5.6有效 define('FOO', [1, 2, 3])...; // 在PHP 5.6无效, 在PHP 7.0有效 因为const在编译时就被执行了,所以它在速度上要比define快一点。...但是在查询时间上,两者是没有区别的(因为二者用的都是同一个查询表) 最后需要注意的一点是,const可以在classinterface当中使用 ,而define是做不到这一点的: class Foo

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHPdefine() 与 const定义常量的区别详解

    本文实例讲述了PHPdefine() 与 const定义常量的区别。分享给大家供大家参考,具体如下: 前言 今天在Stackoverflow又看到一个很有趣的文章,所以翻译过后摘了过来。...文章是由PHP开发成员之一的NikiC写的,权威性自然毋庸置疑 正文 在PHP5.3,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define...而define目前是不支持这一功能的,但是该功能会在PHP7被实现: const FOO = [1, 2, 3]; // 在PHP 5.6有效 define('FOO', [1, 2, 3]);...// 在PHP 5.6无效, 在PHP 7.0有效 因为const在编译时就被执行了,所以它在速度上要比define快一点。...但是在查询时间上,两者是没有区别的(因为二者用的都是同一个查询表) 最后需要注意的一点是,const可以在classinterface当中使用 ,而define是做不到这一点的: class Foo

    1K10

    【答疑解惑】defineconst区别

    在c/c++程序我们经常使用到它们,由于使用比较频繁,我们就来做一下对比它们各自的作用。从以下几个方面来说明 1、编译器处理方式不同   define宏是在预处理阶段展开。   ...const常量是编译运行阶段使用。 2、类型安全检查不同   define宏没有类型,不做任何类型检查,仅仅是展开。   const常量有具体的类型,在编译阶段会执行类型检查。...3、存储方式不同   define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。   const常量会在内存中分配。 const 可以节省空间,提高执行效率,避免不必要的内存分配。...const 修饰函数的返回值、修饰类的成员函数(任何不需要修改数据成员的函数都应该使用const修饰)。

    659120

    iOS define const常量区别?

    define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此程序运行时,常量表并没有用define定义的常量,系统不为它分配内存。...const定义的常量,在程序运行时在常量表,系统为它分配内存。 ●define定义的常量,预处理时只是直接进行了替换。所以编译时不能进行数据类型检验。...const定义的常量,在编译时进行严格的类型检验,可以避免出错。 ●const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。...●define可以定义一些简单的函数,const不可以 ●有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试

    43630

    const与#define的区别、优点

    比如我们常见的#include 命令告诉处理器读取系统头文件stdio.h的内容,并把它直接插入程序文本。咱们的#define也是,仅仅是单纯的文本替换。...const常量是编译运行阶段使用。 类型安全检查不同 define宏没有数据类型,不做任何类型检查,仅仅是展开。 const常量有具体的数据类型,在编译阶段会执行类型检查。...存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。 const常量会在内存中分配(可以是堆也可以是栈)。 const  可以节省空间,避免不必要的内存分配。...例如:   #define PI 3.14159 //常量宏 const doulbe Pi=3.14159; //此时并未将Pi放入ROM double i=Pi; //此时为Pi分配内存,以后不再分配...const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程只有一份拷贝,而 #define定义的常量在内存中有若干个拷贝

    1.7K10

    CC++define定义的常量与const常量

    常量是在程序不能更改的量,在C/C++中有两种方式定义常量,一种是利用define宏定义的方式,一种是C++中新提出来的const型常变量,下面主要讨论它们之间的相关问题; define定义的常量:...这个关键字保证每次在使用变量时都去内存读取。 我们可以总结出constdefine的几个不同之处: 1)define是一个预处理指令,const是一个关键字。...2)define定义的常量编译器不会进行任何检查,const定义的常量编译器会进行类型检查,相对来说比define更安全 3)define的宏在使用时是替换不占内存,而const则是一个变量,占内存空间...4)define定义的宏在代码段不可寻址,const定义的常量是可以寻址的,在数据段或者栈段。...5)define定义的宏在编译前的预处理操作时进行替换,而const定义变量是在编译时决定 6)define定义的宏是真实的常量,不会被修改,const定义的实际上是一个变量,可以通过相关的手段进行修改

    1.7K10

    如何正确使用const(常量),define(宏)

    前言 在开发,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符。...本篇主要介绍在开发怎么正确使用constdefine(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...取的时候只需要给前面中间的地址,如果是整型、浮点型会有多分拷贝,但这些数写在指令,占的只是代码片段而且,大量使用宏会导致二进制文件变大。...define在预处理阶段进行替换,const常量在编译阶段使用; define不做类型检查,只进行替换,const常量有数据类型,会执行类型检查; define不能调试,const常量可以调试; define...定义的常量在替换后运行过程,会不断占用内存,而const定义的常量存储在数据段,只有一份拷贝,效率更高; define可以定义函数,const不可以。

    2.3K70

    如何正确使用const(常量),define(宏)

    前言 在开发,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符。...本篇主要介绍在开发怎么正确使用constdefine(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...取的时候只需要给前面中间的地址,如果是整型、浮点型会有多分拷贝,但这些数写在指令,占的只是代码片段而且,大量使用宏会导致二进制文件变大。...define在预处理阶段进行替换,const常量在编译阶段使用; define不做类型检查,只进行替换,const常量有数据类型,会执行类型检查; define不能调试,const常量可以调试; define...定义的常量在替换后运行过程,会不断占用内存,而const定义的常量存储在数据段,只有一份拷贝,效率更高; define可以定义函数,const不可以。

    87020

    iOS学习——#defineconst、typedef的区别

    在iOS开发中经常遇到一些字段类型的定义,例如配置生产测试不同环境的参数等,这时候经常用到#defineconst以及typedef。那么它们之间有什么区别呢?我们接下来一个一个具体了解下。...的其他用法可以参见后面这篇博文:iOS开发你真的会用#define么!!!?...;而const常量会在内存中分配(可以是堆也可以是栈),const 可以节省空间,避免不必要的内存分配 宏 const #define PI 3.14159 //常量宏 const doulbe Pi...,所以,const定义的常量在程序运行过程只有一份拷贝(因为是全局的只读变量,存在静态区),而 #define定义的常量在内存中有若干个拷贝。...2.2 typedef#define define是文本替换,属于预编译指令,本身不参与编译,除非希望替换的文本中有;否则不用加。

    79640

    defineconst关键字的多种用法

    const 在C++const 是一个关键字,用来修饰的内容不可变。...{ public: void SomeFunction() const { // 不能修改成员变量 } }; 在类,成员函数声明const关键字表示该函数是一个常量成员函数...易错 1. constdefine的区别 #define PI 3.14 //符号常量 const float PI=3.14; //常变量 const用于定义常量;而...都用于常量定义时,它们的区别有: const定义的常变量具有变量的基本属性,包括数据类型存储单元,而#define无 有些编译器可以对const常变量进行调试,不能对宏调试 符号常量采用...简述常量指针指针常量的区别 //const* 是常量指针,*const 是指针常量 int const *a; //a指针所指向的内存里的值不变,即(*a)不变 int *const a;

    9110

    C++constconst对象分别调用constconst成员函数

    一、先来提出问题 const对象可以调用非const成员函数吗? 非const对象可以调用const成员函数吗? const成员函数内可以调用其它的非const成员函数吗?...二、实践出真知 1、const对象可以调用const成员函数 2、const对象不能调用非const成员函数 3、非const对象可以调用const成员函数 4、非const对象可以调用非const成员函数...5、const成员函数不能调用非const成员函数 6、非const成员函数可以调用非const成员函数 我们知道c++在类的成员函数还会隐式传入一个指向当前对象的this指针,所以在test类,...实际的print函数应该是这样的void print(test * this);,这代表一个指向test对象的指针this被传入到了print函数 假如现在我们用test类创建一个对象, 1 test...* this; 是void print() const;this指针的类型是一样的,所以常量对象可以调用const成员函数。

    1.3K20

    iOS学习——iOS 宏(define)与常量(const)的正确使用

    const *HSCoder = @"汉斯哈哈哈"; NSString * const HSCoder = @"汉斯哈哈哈"; 当我们想全局共用一些数据时,可以用宏、变量、常量 //宏 #define...取的时候只需要给前面中间的地址,如果是整形、浮点型会有多份拷贝,但这些数写在指令。...static NSString * const kUserName = @"StrongX"; externstatic的用法   在常量定义时我们经常会用到两个关键字,externstatic。...那么这两个关键字的具体用法作用是什么呢?下面我们就一起探究一下。 关键字extern 关键字extern主要是用来引用全局变量,它的原理是先在本文件查找,查找不到再到其他文件查找。...(OC没有类似C++的名字空间的概念) 所以当你在你自己的.m文件需要声明一个只有你自己可见的局部变量(k开头)的变量的时候一定要同时使用“static”const”两个符号。

    1.8K30

    Dart final const 区别

    下面先用简单的例子说明一下区别,再通过代码理解"const所修饰的是编译时常量"这句话: 基本用法 final:只能被设一次值,在声明处赋值,值普通变量的设值一样,可以是对象、字符串、数字等,用于修饰值的表达式不变的变量...atm = 1.01325 * bar; // 值的表达式的变量必须是编译时常量(bar); var c = 12; // atm = 1 * c; //出错,因为c不是一个编译时常量...//你可以改变 非final, 非const 修饰的变量, // 即使它的值为编译时常量值. foo = []; // 不能改变finalconst修饰的变量的值. // bar = []; //...[][1,2,1]是不同的对象*/ print(foo); final baz = [1]; // baz=[1,2,3,4]; //出错 此调用修改了变量的实例 即:[1]...[1,2,3,4]是不同的对象 baz[0]=2; //正常执行,只修改了变量引用对象的成员变量的值 print(baz); final bad = []; //

    3.2K10
    领券