当前位置: 代码迷 >> C语言 >> 结果为什么是10?
  详细解决方案

结果为什么是10?

热度:199   发布时间:2007-07-26 23:10:19.0
结果为什么是10?
这个程序的输出结果为什么会是10
here iskey
main()
{ char *s,*s1="here is";
char *s2="key";
s=s1;
while(*s1)s1++;
while(*s1++=*s2++);
s2=s;
while(*s2)s2++;
printf("%d\n",s2-s);
printf("s=%s\n",s);
}
搜索更多相关的解决方案: 结果  

----------------解决方案--------------------------------------------------------
这个程序应该有Runtime Error.
指针s1指向的内存不可写,但是你写了
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

坚持到底
2007-07-27 03:17:57
anlogo

等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
  得分:0 
main()
{ char *s,*s1="here is";
char *s2="key";
s=s1; //保存S1地址
while(*s1)s1++; //s1指向s的末尾'\0'
while(*s1++=*s2++); //把s2拷贝到s的末尾 此时s="here iskey"
s2=s; //把s2指向s
while(*s2)s2++; //s2指向s的末尾'\0'
printf("%d\n",s2-s); //输出s的长度
printf("s=%s\n",s); //输出s
}
----------------解决方案--------------------------------------------------------
以下是引用anlogo在2007-7-27 12:22:19的发言:
main()
{ char *s,*s1="here is";
char *s2="key";
s=s1; //保存S1地址
while(*s1)s1++; //s1指向s的末尾'\0'
while(*s1++=*s2++); //把s2拷贝到s的末尾 此时s="here iskey"
s2=s; //把s2指向s
while(*s2)s2++; //s2指向s的末尾'\0'
printf("%d\n",s2-s); //输出s的长度
printf("s=%s\n",s); //输出s
}

while(*s1++=*s2++); //把s2拷贝到s的末尾 此时s="here iskey"
这一步就错了把


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

同意二楼的...s1是字符串的首地址,相当于一个指针常量...我用VC运行,编译没错,但运行出错

[此贴子已经被作者于2007-7-27 16:22:51编辑过]


----------------解决方案--------------------------------------------------------
......程序没错把,晕~~
----------------解决方案--------------------------------------------------------

运行通过,没有问题呀,环境是TC2


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

main()
{
char *s,*s1="here is";
char *s2="key";
s=s1;
while(*s1) s1++;
while(*s1++=*s2++);
s2=s;
while(*s2) s2++;

s1=s;你把S的首地址付S1就能打因出
printf("%s",s1);

}


----------------解决方案--------------------------------------------------------
以下是引用bluecomputer在2007-7-27 16:21:18的发言:

同意二楼的...s1是字符串的首地址,相当于一个指针常量...我用VC运行,编译没错,但运行出错


还不是很懂,S1是指针,指针地址为什么不可以自增呢?

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

  相关解决方案