免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2077 | 回复: 15
打印 上一主题 下一主题

谁来解释一下这段代码的格式?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-14 12:19 |只看该作者 |倒序浏览
static int
      friend_search(uid, uentp, tblsize)
      unsigned uid;
      struct user_info *uentp;
      int tblsize;
      {
              int hi, low, mid;
              //int cmp;
     
              if (uid == 0) {
                      return NA;
              }
              hi = tblsize - 1;
              low = 0;
              while (low <= hi) {
                      mid = (low + hi) / 2;
                      //cmp=uentp->;friend[mid] - uid;
                     if (uentp->;friend[mid] == uid) {
                              return YEA;
                     }
                    if (uentp->;friend[mid] >; uid)
                            hi = mid - 1;
                     else
                             low = mid + 1;
             }
            return NA;
     }
在函数声明后面加了三个变量声明,感觉挺奇怪的,感觉不太对劲,但这是一个BBS的源代码里的

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-08-14 12:23 |只看该作者

谁来解释一下这段代码的格式??

那三个是对参数列表的 参数 进一步的说明.

论坛徽章:
0
3 [报告]
发表于 2005-08-14 12:30 |只看该作者

谁来解释一下这段代码的格式??

mq110,哪里有对这种格式 的详细说明 ,以前没有见过,只记得C++里类初始化函数有类似格式,但那时候参数是用逗号间隔的啊

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-08-14 12:39 |只看该作者

谁来解释一下这段代码的格式??

哦? 这不是C 代码吗?就是函数的参数列表的另一个写法.

俺也只是见过. 至于是什么标准的.俺也不清楚.

论坛徽章:
0
5 [报告]
发表于 2005-08-14 13:16 |只看该作者

谁来解释一下这段代码的格式??

关键它那三个变量声明后面都有分号,那函数却还是一个整体??

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-08-14 13:18 |只看该作者

谁来解释一下这段代码的格式??

[quote]原帖由 "homesp"]关键它那三个变量声明后面都有分号,那函数却还是一个整体??[/quote 发表:


我想 关于分号的问题. 对它的处理是编译器的事.

我们要做的就是 知道它可以这样用.然后用它就可以了.

论坛徽章:
0
7 [报告]
发表于 2005-08-14 14:49 |只看该作者

谁来解释一下这段代码的格式??

是老式的C函数参数声明格式,没有什么特别的意思,现在基本都不用了。

在老版本C语言中,参数类型说明允许放在函数说明部分的第2行单独指定。

例如:

  1. int fun(s)

  2. int s;

  3. {

  4. ...

  5. }
复制代码


也只可能在翻找旧的程序时才会遇到。
给个例子吧:
  1. unsigned int str_len(s)
  2. register char *s;
  3. {
  4.   register char *t;

  5.   t = s;
  6.   for (;;) {
  7.     if (!*t) return t - s; ++t;
  8.     if (!*t) return t - s; ++t;
  9.     if (!*t) return t - s; ++t;
  10.     if (!*t) return t - s; ++t;
  11.   }
  12. }
复制代码

参见:http://blog.chinaunix.net/articl ... 822&blogId=5727

论坛徽章:
0
8 [报告]
发表于 2005-08-14 14:49 |只看该作者

谁来解释一下这段代码的格式??

这是古时候C语言的写法,没见过说明你属于新生代人类.我记得是在89年的标准里好像建议不在使用这种写法,提倡使用现在的函数头形式.现在,如果你还要这样写的话,老板要提建议的.你看K&R第二版的时候,应当还存在这种型式.

论坛徽章:
0
9 [报告]
发表于 2005-08-14 15:25 |只看该作者

谁来解释一下这段代码的格式??

我从来就这么写呀

论坛徽章:
0
10 [报告]
发表于 2005-08-14 15:51 |只看该作者

谁来解释一下这段代码的格式??

原来如此,长见识了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP