关于srcpy

mm1543 2008-03-30 01:19:29
char *srcpy(char *strDest,const char *strSrc)
{
if ( strDest == NULL || strSrc == NULL)
return NULL ;
if ( strDest == strSrc)
return strDest ;
char *tempptr = strDest ;
while(*strSrc!='\0')
{
*strDest++ = *strSrc++;
}
return tempptr ;
}
我把while(*strSrc!='\0')
{
*strDest++ = *strSrc++;
}
注释掉以后,监视tempptr 变量和没有注释一样啊,不加上这个while语句可以吗?或者说加和不加有什么区别吗?
请详细解释一下:指针变量存放的是一个地址,那么怎样通过其存放的地址知道它对应的是什麽呢?
比如:char * pstr="HELLO WORLD!";
比如pstr中存放的地址是:0x0013ff6c,而0x0013ff6c中存放的是"H"
那怎么知道pstr指向的是"HELLO WORLD!"而不是"H"呢?是不是编译生成的符号表中已经标记了呢,请高手指教,多谢!
...全文
168 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mm1543 2008-03-30
  • 打赏
  • 举报
回复
哦,我知道了,非常感谢啊!
ttkk_2007 2008-03-30
  • 打赏
  • 举报
回复
注意你调用的是strcpy,调用的string.h里面的strcpy
而你的函数是srcpy
不一样
用户 昵称 2008-03-30
  • 打赏
  • 举报
回复
你写的程序正好写反了,一个逻辑上更合理的写法应该是

char *srcpy(char *strDest,const char *strSrc) 
{
if ( strDest == NULL || strSrc == NULL)
return NULL ;
if ( strDest == strSrc)
return strDest ;
char *tempptr = strDest ;
while(*strSrc!='\0')
{
*strDest++ = *tempptr++;
}
return strDest ;
}
mm1543 2008-03-30
  • 打赏
  • 举报
回复
谢谢你,你说的很好,我好像明白了
但是,我刚才把那个While语句注释掉以后
char * strTestStrSource="Hello World";
pstr=strcpy(str, strTestStrSource);
发现pstr变量的value栏里面是"0x0013ff6c "Hello World""
没有注释掉while语句的时候也是这个东西,为什么会是一样的呢
ttkk_2007 2008-03-30
  • 打赏
  • 举报
回复
不加while怎么实现拷贝
监视tempptr 变量和没有注释一样啊,这句话什么意思?

比如:char * pstr="HELLO WORLD!";
比如pstr中存放的地址是:0x0013ff6c,而0x0013ff6c中存放的是"H"
那怎么知道pstr指向的是"HELLO WORLD!"而不是"H"呢?是不是编译生成的符号表中已经标记了呢,请高手指教,多谢!

==================================================
因为是char*,所以他回去找字符串结束符'\0',从他指向的开始到结束符之前就是他的内容

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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