#include <stdio.h>
static const int In1 = 5;
static const int In2 = 5;
static char *ChP1 = "chen";
static char *ChP2 = "chen";
int main(int argc, char** argv)
{
printf("In1:%p, In2:%p\n", &In1, &In2);
int *InTemp = (int*)(&In1);
*InTemp = 4;
printf("In1:%d, In2:%d\n", In1, In2);
printf("ChP1:%p, ChP2:%p\n", ChP1, ChP2);
return 0;
}
总结:
- 变量是直接取值来使用的。正常情况下直接使用变量的时候,其实都是对该变量地址取了值,像ChP1和ChP2这种字符串,在被调用的时候也是一样的(16行),用的并不是ChP1的地址,而是这个地址对应的值(字符串首地址),由于是字符串输出,既然获取了首字符地址,那就可以从首输出到'\0'结束为止。
- 换种理解:凡是定义的变量,他们的地址百分百是各不相同的