const 与#define 的比较】的更多相关文章

问]在php中定义常量时,const与define的区别?  [答]使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数.另外const在编译时要比define快很多. (1).const用于类成员变量的定义,一经定义,不可修改.define不可用于类成员变量的定义,可用于全局常量.(2).const可在类中使用,define不能.(3).const不能在条件语句中定义常量.例如:    if (...){        const FOO = 'BAR'; …
问题描述:const 与 define 宏定义之间的区别 (1) 编译器处理方式不同     define宏是在预处理阶段展开:     const常量是编译运行阶段使用: (2) 类型和安全检查不同     define宏没有类型,不做任何类型检查,仅仅是展开:     const常量有具体的类型,在编译阶段会执行类型检查: (3) 存储方式不同     define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存:     const常量会在内存中分配(可以是堆中也可以是栈中): 利…
关于const和define的内存分配问题 const与#define宏定义的区别----C语言深度剖析 1,  const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静态区),而#define定义的宏常量在内存中有若干个拷贝. 2,  #define宏是在预编译阶段进行替换,而const修饰的只读变量是在编译的时候确定其值. 3,  #define宏没有类型,而const修饰的只读变量具有特定的类型. 总结:const节省了空间,避免了不必要的内存分配,同时提高了…
static和const联合使用:   static将一个全局变量变成局部变量   const将一个局部变量变成局部常量 // 定义了一个局部常量      static const CGFloat ZMJRed = 0.4; 使用static const 与 #define: 使用static const修饰变量和宏定义的比较        相同点            都不能再被修改            一处修改,其它都改了        不同点            static con…
php中const与define的使用区别 1.const:类成员变量定义,一旦定义且不能改变其值. define:定义全局常量,在任何地方都可以访问.2.define:不能在类中定义,而const可以. 3.const:不能在条件语句中定义常量.4.const:采用一个普通的常量名称,define可以采用表达式作为名称.5.const:只能接受静态的标量,而define可以采用任何表达式.6.const:大小写敏感.…
(1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有具体的类型,在编译阶段会执行类型检查. (3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存. const常量会在内存中分配(可以是堆中也可以是栈中). (4)const  可以节省空间,避免不必要的内存分配. 例如:          #define PI 3…
[前言] 相信大家看别人代码的时候都遇到过,有人用#define定义,也有人用const定义. 那么两者的区别到底是什么呢?哪个更好用呢? 网上查了又查,下面总结一下. [总结] 编译器处理方式不同 #define宏是在预处理阶段展开 const常量是编译运行阶段使用 类型和安全检查不同 #define宏没有类型,不做任何类型检查,仅仅是展开 const常量有具体的类型,在编译阶段会执行类型检查 存储方式不同 #define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存 const常量…
今天一直在学习函数定义之类的问题,下午正好有机会和大家共享一下. 一.bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节. 声明方法:bool result;result=true; 可以当作整数用(true一般为1,false为0) 把其它类型的值转换为布尔值时,非零值转换为true,零值转换为false,注意会产生截断. 二.const 限定符 (1).用const给字面常量起个名字(标识符),这个…
在刷题的时候经常遇到定义全局常量我一般都是用#define(可能是因为很少接触const的原因) 在昨天做到51nod1082时照常暴力用#define定义最大.可是提交超时..... 后来看他人写的时候发现定义全局用的是const于是百度了下两者的区别 (1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有具体的类型,在编译阶段会执行类型检查. (3…
在PHP中(PHP 4及以后),我们可以使用函数define()来定义常量,例如: <?php define('PI',3.14159);  //定义一个名为PI的常量 echo PI;    //输出:3.14159 ?> 不过,在PHP 5.3.0之后,除了使用函数define()之外,我们还可以使用PHP关键字const来定义常量,例如: <?php //以下代码需在PHP 5.3.0及之后的版本中运行 const PI =3.14159;//使用const关键字定义一个名为PI的…
什么是const ? 什么是#define? 他们有什么用? 他们有什么区别? 应该怎么用? 总结 1. 什么是const ? const是C/C++中的一个关键字(修饰符), const一般用来定义一个常量, 既然叫做常量, 即以后再也不能修改其值. const定义常量 2. 什么是#define? 而define, 宏定义, 则是一条预编译指令, 编译器在编译阶段会将所有使用到宏的地方简单地进行替换. 如下图所示 : 宏定义的替换 3. 他们有什么用? const 和 define 都能定义…
在php中定义常量时,可用到const与define这两种方法,那他们到底有什么区别呢? 1.const用于类成员变量的定义,一经定义,不可修改.define不可用于类成员变量的定义,可用于全局常量. 2.const可在类中使用,define不能. 3.const不能在条件语句中定义常量. 如:if(constition){ 哲理不能用const,只能用define } 4.const只能接受静态的标量,而define可采用任何的表达式. const BIT_5 = 1 << 5;    //…
来源网址:http://wujiangping.blog.163.com/blog/static/195182011201255115125205/ 请区别用#define命令定义的符号常量和用const定义的常变量.符号常量只是用一个符号代替一个字符串,在预编译时把所有符号常量替换所指定的字符串,它没有类型,在内存中并不存在以符号常量命名的存储单元.而常变量具有变量的特征,它具有类型,在内存中存在着以它命名的存储单元,可以用sizeof运算符测出其长度.与一般变量惟一的不同是指定变量的值不能改…
常量是一个简单的标识符.在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量).常量默认大小写敏感.通常常量标识符总是大写的. 可以用define()函数来定义常量.在php5.3.0以后,可以使用const关键字在类定义的外部定义常量,先前版本const关键字只能在类(class)中使用.一个常量一旦被定义,就不能再改变或取消定义. 常量只能包含标量数据(boolean.integer.float和string).可以定义resource常量,但应尽量避免,因为会造成不可预料的结果…
1.const有什么用途?(1)可以定义const常量(2)const可以修饰函数的参数和返回值,甚至函数的定义体.被const修饰的东西都受到强制保护,可以预防以外的变动,能提高程序的健壮性. int main() { ; const int k;//错误,未初始化 ;//const对象被设定为仅在文件内有效,要在文件外使用,需要利用extern j+=;//错误,j不能改变 ; int &r1=i; const int &r2=i; r1=; r2=;//错误,r2是一个常量引用 co…
转自:http://www.365mini.com/page/difference-of-define-and-const.htm 众所周知,在PHP中(php 4及以后),我们可以使用函数define()来定义常量,例如: <?php define('PI', 3.14159); //定义一个名为PI的常量 echo PI; //输出:3.14159 ?> 不过,在PHP 5.3.0之后,除了使用函数define()之外,我们还可以使用PHP关键字const来定义常量. 例如: <?p…
所谓常量是一个简单的标识符.在脚本执行期间该值不能改变.常量默认大小写敏感.通常常量标识符总是大写的.常量只能包含标量数据(boolean.integer.float和string).可以定义resource常量,但应尽量避免,因为会造成不可预料的结果. define部分宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段.(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议.)宏的语法为: #define 宏名称 宏值 作为一种建议和一种广大程序员共同的习惯,宏名称经常使用全部大写的…
const 和 #define区别 (2012-12-11 14:14:07) 转载▼ 标签: 杂谈   (1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有具体的类型,在编译阶段会执行类型检查. (3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存. const常量会在内存中分配(可以是堆中也可以是栈中). (…
const 与#define 的比较 C++ 语言可以用 const 来定义常量,也可以用 #define 来定义常量.但是前者比后 者有更多的优点: (1) const 常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安 全检查.而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会 产生意料不到的错误(边际效应). (2) 有些集成化的调试工具可以对 const常量进行调试,但是不能对宏常量进行调试. #include <iostream> /* run this p…
  原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 第一,const与#define的相同点 C++中的const常量类似于宏定义 const  int  c = 5  ≍  #define  c  5 const是用来替换#define的一个手段. 程序一: int main() { const int a=10; printf("a=%d\n",a); return 0; } 程序二: #define a 10 int main() { //const int a=1…
一.bool 类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节. 声明方式:bool result; result=true; 可以当作整数用(true一般为1,false为0) 把其它类型的值转换为布尔值时,非零值转换为true,零值转换为false,注意会发生截断. 二.const 限定符 (1).用const给字面常量起个名字(标识符),这个标识符就称为标识符常量:因为标识符常量的声明和使用形式很像变量,…
前言:针对C++ Primer和Effective C++两本书,以及技术博客与实验测试,本系列主要是针对C++进行系统化学习,记录学习中遇到的问题和经验. (一)const与define 关于const与define的用法与比较,可以详见我之前的这篇文章,在这里就不再赘述了. (二)结构体对齐 简单说一下为什么需要结构体对齐,或者说内存对齐. 在32位操作系统中,一次寻址能够取得的指令长度是4字节(也就是32位地址).对于一个4字节变量来说,如果其存放的位置在正好在一个4字节中,那 对于操作系…
1.const  (1)C++对 const 常量的处理过程:当编译器碰到 常量声明 时,在符号表中放入常量,编译时发现使用常量,则直接以符号表中的值替换. (2)如果,编译中发现,对 const 使用 extern 或者 & 操作符时,则会给对应变量分配新的存储空间. 符号表保存的内容: key       value      a     10 在程序运行时,符号表是不变的. (3)const 是在编译器编译期间,分配内存. int main() { ; // a 定义为一个常量 int *…
一.const的用途 1.定义const常量 2.可以修饰函数的形参,返回值,以及函数体.被const修饰的内容可以受到强制保护,防止被意外修改,提高程序健壮性. const 返回值 函数返回值为 const  只有用在函数返回为引用的情况. 函数返回值引用常量表示不能将函数调用表达式作为左值使用.例如前面讲的返回引用的函数 min( ). int  & min ( int  &i,  int  &j); 可以对函数调用进行赋值,因为它返回的是左值:min ( a ,  b )=4…
(1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有具体的类型,在编译阶段会执行类型检查. (3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存. const常量会在内存中分配(可以是堆中也可以是栈中). (4)const  可以节省空间,避免不必要的内存分配. 例如:           #define PI…
const与#define最大的差别,Const在堆栈分配了空间,而#define只是把具体数值 直接传递到目标变量罢了.或者说,const的常量是一个Run-Time的概念,他在程 序中确确实实的存在可以被调用.传递.而#define常量则是一个Compile-Time概 念,它的生命周期止于编译期:在实际程序中他只是一个常数.一个命令中的参 数,没有实际的存在. const常量存在于程序的数据段. #define常量存在于程序的代码段. 我们要把这个问题分不同的编译器来看. 所以一般我们认为…
前言 在开发中,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符.本篇主要介绍在开发中怎么正确使用const与define(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏.常量.变量: 宏: // 注意后面不需要带符号 #define ScottDidLoginSuccess @"登陆成功" 变量: // 注意后面一定要带符号 NSString *scottDidL…
const与define应用上该怎么取舍 #define WYB 100; const float WYB = 100; define是在预编译的时候展开替换的,const是编译运行阶段使用 define没有类型,不做类型检查处理.只是替换.const常量有具体的类型,在编译的时候会进行类型检查. define宏定义仅仅是替换宏定义不分配内存,变量定义分配内存,const会在内存中分配. const更节省空间,避免不必要的内存分配. #define PI 3.14159 //常量宏 const…
static和const联合使用:   static将一个全局变量变成局部变量   const将一个局部变量变成局部常量 // 定义了一个局部常量      static const CGFloat ZMJRed = 0.4; 使用static const 与 #define: 使用static const修饰变量和宏定义的比较        相同点            都不能再被修改            一处修改,其它都改了        不同点            static con…
1.const和define区别 const有数据类型(不能改变的变量),define只是简单的字符串替换,没有数据类型. C++程序用const完全取代 define. const还可以类成员函数为不能改变成员变量的恒态函数.(mutable int a除外) 例子: const int buffsize=10: int buf[buffsize]; 在C编译器中编译出错,因为 2.string类的使用 string string[3]={"aa","bb",&q…