首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

库函数有关问题

2012-03-29 
库函数问题char* mystrcpy(char* strDest,char* strSrc){char* addressstrDestassert((strDest!NULL)&&

库函数问题
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只的地址不能引用。

所以两个必须判断;



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

热点排行