|
|
发表于 2005-9-7 11:33:58
|
显示全部楼层
引用:
作者: manphiz
楼主可以试试输出name两次赋值前后的地址,给个参考:
#include <stdio.h>
int main()
{
char* name;
name="11111";
printf("%s\n", name);
printf("%d\n", &name);
name="22222";
printf("%s\n", name);
printf("%d\n", &name);
}
在我这里的输出:
11111
-1079377036
22222
-1079377036
说明name的地址没有便,两个字符串都被存到了同一个地址中。这也符合标准的规定
阁下这段代码剧经典、精炼、实用......
=======================================
还有这样的说法啊????????????
printf("%d\n", &name);
打印出的是字符指针变量 name 的地址,当然不会变
字符串 "1111" 和 "2222" 的地址是
printf("%d\n", name);
就是是字符指针变量 name 的值
你看看"1111" 和 "2222" 的地址是一样的不是?
这两个字符串是编译时分配地址的,不用考虑释放内存,但是绝对不会保存在同一段内存上。 |
|