读书人

库函数有关问题

发布时间: 2012-03-29 12:53:12 作者: rapoo

库函数问题
char* mystrcpy(char* strDest,char* strSrc)
{
char* address=strDest;
assert((strDest!=NULL)&&(strSrc!=NULL));
while(*strSrc!='\0')
{
*strDest++=*strSrc++;
}
return address;
}
这个函数中,assert((strDest!=NULL)&&(strSrc!=NULL));这句话有什么用?为什么两个指针都要判断是否为NULL呢?求指教!


[解决办法]
assert是断言,用着这里,意思是说,正常情况下,(strDest!=NULL)&&(strSrc!=NULL)这个表达式为真,也就是说,strDest和strSrc不为空
[解决办法]
这个NULL不是空的意思,
判断strDest!=NULL:说明已经初始化strDest了,至少只向一个可以用的内存地址,NULL不可用;
判断strSrc!=NULL:说明可以进行复制;有要复制的内容;NULL只的地址不能引用。

所以两个必须判断;



[解决办法]
空指针变野指针就危险了

读书人网 >C语言

热点推荐