再来说常量,虽然常量是有分配固定内存地址,但是常量的意义就是指‘不变化的量’,所以说这是类型限定了常量是不能被改变的,如果能变,那就不是常量了。
这个情况比较多,不过一般说以下两种情况下的常量是有地址的:1、如果是以const关键字修饰变量而产生的“不可变变量”的话,是有地址的,如const
int
a
=
0。
但是严格来说const修饰只是产生了不可变变量,并不是严格意义上的常量。
2、字符串常量,例如
char
*a
=
"abc"那么字符串“abc”就是一个字面值字符串,这是一个常量,其地址就是这个字符串第一个字符所在的地址。
再有像是字面值数字
"int
a
=
5"里边的5,是没有地址的。
表达式本身作为代码,并不拥有地址。但是用来组成表达式的变量或常量是可以拥有地址的。
获取一个常量或变量的地址可以用“&”取址符,例如:
const
int
b
=
0
const
int
*
pb
=
&b
那么pb里边就是b的地址了。