- 论坛徽章:
- 0
|
我写了这样一段代码
char c='b';
int main()
{
char *p=&c;
printf("%p\n",p);
return 0;
}
运行后显示的地址为0x804a014
我运行了几次,发现都是这个地址,我猜想一个c语言程序的全局变量如果是定义了
则在内存中的数值就定了,不会改变了,即使结束了该进程,不知道对不对?
然后我在原程序中加入了另一行代码
printf("%c\n",(char *)0x804a014);
显示的结果为A,我不能理解为什么是大A,如果是巧合的话我又试了别的其他字符都是其大写字符,
这是为什么?
然后我在源程序中把char c改为char c='c';
结果依然显示A,这就有些解释不通了,明明0x804a014对应的直应该是A 阿,怎么没变化呢?
我最后写的程序为
char c='b';
int main()
{
char *p=&c;
c = 'c';
printf("%p\n",p);
printf("%c\n",*p);
printf("%c\n",(char *)0x804a014);
return 0;
}
运行结果为
0x804a014
c
A
不是很明白为什么会有这样的结果
p的值就是0x804a014,我显示这个地址的值应该是c才对阿,为什么一直是A呢?
[ 本帖最后由 iceriver68 于 2010-1-10 00:08 编辑 ] |
|