php中static,const和define的区别

 我来答
检永贞4k
2016-08-05 · TA获得超过1784个赞
知道小有建树答主
回答量:508
采纳率:0%
帮助的人:217万
展开全部
(1)编译器处理方式不同  define宏是在预处理阶段。  const常量是编译运行阶段使用。(2)类型和安全检查不同  define宏没有类型,不做任何类型检查,仅仅是。  const常量有具体的类型,在编译阶段会执行类型检查。(3)存储方式不同  define宏仅仅是,有多少地方使用,就多少次,不会分配内存。  const常量会在内存中分配(可以是堆中也可以是栈中)。(4)const可以节省空间,避免不必要的内存分配。例如:#definePI3.14159//常量宏constdoulbePi=3.14159;//此时并未将Pi放入ROM中doublei=Pi;//此时为Pi分配内存,以后不再分配!doubleI=PI;//编译期间进行宏替换,分配内存doublej=Pi;//没有内存分配doubleJ=PI;//再进行宏替换,又一次分配内存!const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。(5)提高了效率。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式