请教assert

alfredlp 2003-10-21 10:18:32
在高质量c++编程指南中有这么一道题。
已知strcpy函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while( (*strDest++ = * strSrc++) != ‘\0’ ) // 2分
NULL ;
return address ; // 2分
}
有一点不明之处就是assert不是只在调试版中有用吗,如果在release版中
不能进行检查,那还有什么用呢?
...全文
49 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
darcymei 2003-10-21
  • 打赏
  • 举报
回复
strcpy这个函数只有开发者用得到吧!ralease版是给用户使用的,他不可能控制到这个函数
strDest参数。因此这用assert没什么关系!对于某些动态申请内存的操作,的却不应该用assert().
daizh 2003-10-21
  • 打赏
  • 举报
回复
ASSERT宏只在调试版本中才会有作用
他出这个题的思想之一只是看你有没有考虑到对变量的合法性进行检查没有。
利用合法性检查可以帮助我们在由于变量非法而引发异常方便的定位错误,所以在开发程序时多利用合法性检查并在必要的地方使用检查宏会帮助我们更有效的进行调试。
alfredlp 2003-10-21
  • 打赏
  • 举报
回复
醍醐灌顶,谢谢mmlymlymly(mly),是我没弄清楚使用的环境,虽然暂时理解的还不是很清楚。

69,337

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧