库函数有关问题

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

所以两个必须判断;



------解决方案--------------------
空指针变野指针就危险了