简单的c语言的问题,谢谢高手

来源:百度知道 编辑:UC知道 时间:2024/06/01 23:33:02
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ )
NULL ;
return address ;
}

这个例子是做一个strcpy的函数,不大明白while里面的意思,还有\0是什么啊?

assert这句里面是什么啊?
求求高手,帮帮忙,多谢
重奖。

assert是当括号里的内容为假时程序报错。
while( (*strDest++ = * strSrc++) != ‘\0’ )
这句while是精华啊~~~~~将*strSrc赋值给*strDest,然后判断是不是已经到达\0(即字符串结尾),同时,执行完赋值后strSrc和strDest指针均后移一位。总的结果即是:将strSrc指向的内容复制到strDest,直到strSrc指向\0.
\0代表字符串的结束符。
你把这个while弄明白了,对指针的理解就深一层了。

ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序:
......
ASSERT( n != 0);
k = 10/ n;
......
ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
assert()的功能类似,它是ANSI C标准中规定的函数,它与ASSERT的一个重要区别是可以用在Release版本中。

就是将strSrc中的字符一个个赋值给strDest。

换种好理解的写法就是
while( (*strDest++ = * strSrc++) != ‘\0’ )

while((*strSrc)!='\0')
{
*strDest=*strScr;
strScr++;
strDest++;
}

这样能看懂了吧?

char *strcpy(char *strDest, const char *strSrc);
{
a