当前位置: 代码迷 >> C语言 >> 来看看这两个程序
  详细解决方案

来看看这两个程序

热度:97   发布时间:2005-03-04 14:27:00.0
来看看这两个程序

#include <stdio.h> void copy(char *to,char *from )

{ while((*to++=*from++)!='\0'); } main() { char a[]="china"; char b[]="ewe"; copy(a,b); printf("%s\n",a); }

#include <stdio.h> void copy(char *to,char *from )

{ while((*to++=*from++)!='\0'); } main() { char *a="china"; char *b="ewe"; copy(a,b); printf("%s\n",a); } 这两程序有什么区别,为什么第二个不能得到正确结果

搜索更多相关的解决方案: include  china  

----------------解决方案--------------------------------------------------------

#include <stdio.h> void copy(char *to,char *from )

{ while((*to++=*from++)!='\0'); *to='\0'; } main() { char *a="china"; char *b="ewe"; copy(a,b); printf("%s\n",a); } 这样试试!


----------------解决方案--------------------------------------------------------
你得不到?我两个程序的结果可都是一样的哈!
----------------解决方案--------------------------------------------------------

[此贴子已经被作者于2005-3-5 18:26:12编辑过]



----------------解决方案--------------------------------------------------------
TC2.0 两个程序一样正确运行……

Visual Stdio 6.0 中指针运行提示错误!
                           数组运行正确

[此贴子已经被作者于2005-3-5 22:06:26编辑过]



----------------解决方案--------------------------------------------------------
大概是这样的:
程序里的字符串常量其实是在text段里面的。而这text段作对可重入程序来说是不允许运行期修改的,也就是只读的。
指针的方式写的那段,直接对text段内的字符串坐写操作就发生了保护错误。
而在tc下(是不是叫做虚拟的实模式?),其实并没有考虑重入问题。所以写就写了。
----------------解决方案--------------------------------------------------------
  相关解决方案