为什么会出现access violation

hp0605054126 2012-05-21 10:24:02
char *mystrcpy(char *strDest,const char*strSrc)
{
if(strDest == NULL ||strSrc ==NULL)
return NULL;
if(strDest ==strSrc)
return strDest;
char *tem = strDest;
while((*strDest++ = *strSrc++)!='\0')
continue;
return tem;
}
执行到while时会报错,什么原因啊?谢谢了
...全文
57 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hp0605054126 2012-05-21
  • 打赏
  • 举报
回复
可是怎么修改啊?初学者,希望能得到指导,谢谢
Isnis-fallen 2012-05-21
  • 打赏
  • 举报
回复
x++为什么不能做左值

x++

{

int temp = x;

x = x + 1;

return temp; //返回右值

}



++x

{

x = x + 1;

return &x; //返回左值

}



不难看出,x++返回的是临时变量temp, ++x返回x的引用,就是x。

临时变量temp无法寻址,自然也无法存入数据。

退一步讲,如果x++=5能够运行的话,其实执行的结果就是temp=5,而temp在本语句结束之后立即释放,因此该语句是毫无意义的。

同时,从上还能看出,前缀没有中间变量,执行效率更高。
Athenacle_ 2012-05-21
  • 打赏
  • 举报
回复
代码本身应该没有问题,看看你调用这个函数的语句把,大概又是字符串溢出了

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧