标题:程序的解释
只看楼主
weishanhu03
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2007-4-24
 问题点数:0 回复次数:2 
程序的解释
编写函数 strcpy:
char *strcpy(char *strDest,const char *strSrc)
{
assert((strDest!=NULL)&&(strSrc !=NULL))
char *address = strDest;
while((*strDest++ = *strSrc)!='\0')
NULL;
return address;
}

请问:
while((*strDest++ = *strSrc)!='\0')
NULL;
这是什么意思啊?
*strDest++是什么意思呢?
菜鸟谢谢大家!
搜索更多相关主题的帖子: 解释 
2007-09-17 09:34
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
while((*strDest++ = *strSrc)!='\0')
这句应该有问题,strSrc一直没有变化,怎么能实现复制.
可以改为:
while((*strDest++ = *strSrc++)!='\0') ;/*空语句不需要加NULL,直接加上一个分号,就可以表示空语句了.*/

例如:*strDest++=ch;就是先将*strDest=ch;然后再将strDest++;

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-09-17 17:38
aoaoaoao
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-5-14
得分:0 

const char *strSrc //const表示 strSrc所指向的字符串 在本函数内是可读但不能被修改的,

assert((strDest!=NULL)&&(strSrc !=NULL)) //assert是一个预定义在编译器中的 断言宏,表示括号内的表达式不成立的话 就执行预定的宏,在这儿目的是为
了防止 两个指针值为NULL,
char *address = strDest;// 是为了保留目的串的首地址,

while((*strDest++ = *strSrc)!='\0') // *strSrc后少了个 ++把, 这个就是将源串复制给目的串,当复制的字符是'\0'的时候跳出循环,
NULL; // 用NULL 是为了显示地表明此语句是 个什么也不做的空语句,防止漏掉分号,

return address; 返回被保留的 目的串的首地址.

2007-09-17 18:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-170499-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.880877 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved