欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

一般何种情况上定义常量

程序员文章站 2022-05-01 10:39:43
...
一般何种情况下定义常量?

新手提问,
常量和变量的值一样,也是存在内存中也是存在栈区吗?
为什么会有常量这种东西呢?反正都是存值,直接用变量代替它不久好了。

常量和变量运用的典型场合有哪些


------解决方案--------------------
看名字就应该知道一些,一个是可以修改的,一个不能修改的
------解决方案--------------------
关键在于 常量是全局的
------解决方案--------------------
本帖最后由 xuzuning 于 2012-12-13 13:39:17 编辑
引用:
版主 变量也可以是全局的呀
是吗?你用用看呀
$a = 123;
define('A', 123);

function func1() {
echo $a; //Notice: Undefined variable: a
}
function func2() {
echo A; //123
}

func1();
func2();

------解决方案--------------------
引用:
本帖最后由 xuzuning 于 2012-12-13 13:39:17 编辑
引用:版主 变量也可以是全局的呀是吗?你用用看呀PHP code?123456789101112$a = 123;define('A', 123); function func1() { echo $a; //Not……

他的意思可能是声明成 global
------解决方案--------------------
凑一下热闹

$GLOBALS['a']='aa';
function abc(){
echo $GLOBALS['a'];
}
abc();

------解决方案--------------------
繼續打醬油

Define('D','DD');
$b='bbb';
$GLOBALS['a']='aa';
function abc(){
Global $b;//如果不加入这一行,下边的行一定出错,这就是变量的作用范围了.
echo $b;
echo $GLOBALS['a'];
Echo D;

$c='ccc';
}
abc();
Echo D;
Echo $c;//這行一定出錯,因為$c聲明的時候作用範圍是在function內

------解决方案--------------------
常量的结构定义:
typedef struct _zend_constant {
zval value;//常量的值
int flags; //CONST_PERSISTENT(跨进程持续存在)
------解决方案--------------------
CONST_CS(大小写敏感)
------解决方案--------------------
CONST_CT_SUBST(允许编译时被替代)
char *name;//常量名
uint name_len;//名称长度
int module_number;//常量模块号,由用户定义的常量,此属性会被初始化为PHP_USER_CONSTANT
} zend_constant;




变量的结构定义
struct _zval_struct {
/* Variable information */
zvalue_value value; //变量值
zend_uint refcount__gc; //引用计数,gc会根据此值来决定是否回收内存
zend_uchar type; //变量类型
zend_uchar is_ref__gc; //是否是一个引用
};



一般何种情况上定义常量

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • 一般何种情况上定义常量
  • 专题推荐