免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 飞灰橙
打印 上一主题 下一主题

[函数] 请大家看看这个函数究竟能找出几个错误 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2006-06-15 15:53 |只看该作者
原帖由 lenovo 于 2006-6-15 13:44 发表

为什么?


别人也是动脑子了,虽然错了,没必要拿出来大家评论啊,当然如果当事人同意例外

论坛徽章:
0
22 [报告]
发表于 2006-06-15 16:13 |只看该作者
确实无敌...

论坛徽章:
0
23 [报告]
发表于 2006-06-15 16:51 |只看该作者
while (src != "\0")

这句话也是错的。

论坛徽章:
0
24 [报告]
发表于 2006-06-15 16:59 |只看该作者
void *memmove (void *dest, const void *src, size_t n);
{
        assert ((dest != NULL) && (src != NULL));

        dest = (void *) malloc (n);  /*能返回到上一级?*/
        if (dest = NULL)                  /*能执行进去?*/
        {
                return NULL;
        }


        void *address = src;     /*返回源的值?奇怪*/
        while (src != "\0")        /*字符串和字符是不一样的;n怎么没用上?*/
        {
                *dest = *src;      /*void的值是?大概有默认值*/
                dest++;
                src++;
        }

        return address;
        free (dest);            /*其实不算错误*/
        dest = NULL;
}
tan1 该用户已被删除
25 [报告]
发表于 2006-06-15 17:16 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
26 [报告]
发表于 2006-06-15 17:30 |只看该作者
...........

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
27 [报告]
发表于 2006-06-15 18:13 |只看该作者
原帖由 converse 于 2006-6-15 13:07 发表
还有if (dest = NULL)

我一般都是把常量放在左边的

没想到你也有这么烂的习惯。
真是匪夷所思啊。
能说说这么做的理由吗?

[ 本帖最后由 flw 于 2006-6-15 18:17 编辑 ]

论坛徽章:
0
28 [报告]
发表于 2006-06-15 19:43 |只看该作者
写成这样也是需要一定的水平的

论坛徽章:
0
29 [报告]
发表于 2006-06-15 19:47 |只看该作者
同意大家的意见。错成这样,需要很多水平。呵呵。

我习惯把常量放在右面。还是很多年前犯过一个=的低级错误,之后再也没犯过,所以有信心。

论坛徽章:
0
30 [报告]
发表于 2006-06-15 19:54 |只看该作者

  1. void *memmove (void *dest, const void *src, size_t n);
  2. {
  3.         assert ((dest != NULL) && (src != NULL));//如果要在函数内部分配内存,则dest为NULL也没关系。

  4.         dest = (void *) malloc (n);//这里不算错误。要求不同,风格不同。
  5.         if (dest = NULL)//看到这里笑了,==
  6.         {
  7.                 return NULL;
  8.         }


  9.         void *address = src;//通常需要把void*具体化,一般用char *。
  10.         while (src != "\0")//看到这里我笑了,*src!='\0',但既然是mem移动了,还比较'\0'干什么呢?应该是while(n--)
  11.         {
  12.                 *dest = *src;//风格问题,一般我喜欢把下面两行提前,*dest++ = *src++;
  13.                 dest++;
  14.                 src++;
  15.         }

  16.         return address;//从这里开始,佩服得五体投地……
  17.         free (dest);
  18.         dest = NULL;
  19. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP