应该是这样的,谢谢啦....新年好....
以下是引用保修一年在2007-2-14 17:12:24的发言:
各位还是没答到正题上啊,我是问try 所指的字符串“asdf" 所占的内存有没有被改。
从程序运行结果看它好像是被改了,可“asdf" 又不是变量,怎么能被改呢???
下面是完整的程序,大家可以运行试试:
#include <stdio.h>
int main()
{
char * try="asdf";//执行后,为"asdf"分配空间,try这个空间中,存放一个地址,这个地址是字符串"asdf"中的'a'的地址.
scanf ("%s",try );//输入一串字符到缓冲区,回车,编译器为输入的字符串开辟空间,把首地址存在try这个空间中,
printf( "%s",try);//此时,到try空间中,找到存放在里面的地址,然后读出
getchar(); //吸收'\n'字符用??
}
结果:
try所指向的字符串“asdf" 所占的内存没有被改变.而被抛弃,程序执行完,自动收回
各位还是没答到正题上啊,我是问try 所指的字符串“asdf" 所占的内存有没有被改。
从程序运行结果看它好像是被改了,可“asdf" 又不是变量,怎么能被改呢???
下面是完整的程序,大家可以运行试试:
#include <stdio.h>
int main()
{
char * try="asdf";//执行后,为"asdf"分配空间,try这个空间中,存放一个地址,这个地址是字符串"asdf"中的'a'的地址.
scanf ("%s",try );//输入一串字符到缓冲区,回车,编译器为输入的字符串开辟空间,把首地址存在try这个空间中,
printf( "%s",try);//此时,到try空间中,找到存放在里面的地址,然后读出
getchar(); //吸收'\n'字符用??
}
结果:
try所指向的字符串“asdf" 所占的内存没有被改变.而被抛弃,程序执行完,自动收回
main()
{
char * try="asdf",*p;
p=try; //保留字符串的首地址
printf("try=%d,p=%d %s\n",try,p,p);
scanf ("%s",try ); //try虽然改变而p没变
printf( "%s try=%d,p=%d\n",try,try,p);//可以看出输入字符串后,try所指地址并没有变化,原字符串被覆盖而不是抛弃
printf("%s",p);
getchar();
}
[此贴子已经被作者于2007-2-18 10:24:12编辑过]