一段c++ 看的有点晕 帮我解释一下!

来源:百度知道 编辑:UC知道 时间:2024/05/15 08:37:33
if((fds=(dhtfds *)malloc(mem))==NULL)goto error;
mem=strlen(fn)+1; /* file name */
if((fname=(char *)malloc(mem))==NULL)goto error;
strcpy(fname,fn);

第一句反正是申请一个大小为mem的空间,具体什么作用我也不知道,要结合程序其他部分来看,如果申请失败,则转向执行错误处理代码;
第二句是考虑到字符串结束会有一个结束符'\0', 结束符不被strlen函数所考虑,所以拷贝字符串时,要多申请1字节的空间来放结束符.
第三句就是申请空间来放字符串了.
第四句,用拷贝函数将fn的值拷贝给fname

if((fds=(dhtfds *)malloc(mem))==NULL)goto error;
dhtfds应该是写程序的人自己定义的一种数据类型吧..
这句是判断给变量fds动态分配mem个内存空间,如果分配不成功,就跳转到error,error应该是一个标号..如果分配成功,就将mem赋值为fn这个字符串的长度(这个字符串中字符个数)+1..
if((fname=(char *)malloc(mem))==NULL)goto error; 这句就同理了
strcpy(fname,fn)就是将fn拷贝到fname中,fname中原来的内容被覆盖..

我的理解大概就这样了,望高手指点了..