char*st1="12345"为str1 const char *类型,它的值是常量,不可改变的,用strcat(st1,st2);当然会引起内存读写的错误了。
[bo][un]卧龙孔明[/un] 在 2008-9-14 23:21 的发言:[/bo]
tc下是正确的...
我的老版本二级教程上就这么写的
tc下是正确的...
我的老版本二级教程上就这么写的
TC有没有字符串共享呢?
char *str1="Hello",*str2="llo";
是不是str2指向str1中机某个部分了呢?那么我改
str[3]='a',那么str2是不是等于"lao"了呢?这个还是正确的么?
我觉得应该是有字符串共享的,因为TC总共就1M内存,要是全被字符串占了估计也就不剩下多少了……
这里还有一个溢出的问题:
char *str="Hello";
int i;
for(i=0;i<9999999;i++)str[i]='a';
会不会死机呢?内存从最后端的字符串存取区回绕到了前面的IDT,就会马上死机。你strcat和上面的语句有同样的问题。记住,TC里面指针的范围只是0~FFFF,再大就回绕了。