一个奇怪的函数参数定义及解答
关于一个奇怪的函数参数定义及解答
问题来源于:涛涛的blog:http://www.sysinfo.cn/index.php?action=show&id=297&page=1#cm433
解答:kernelxu:http://blog.chinaunix.net/index.php?blogId=5727
一个奇怪的函数参数定义及解答
奇怪的参数声明:
unsigned int str_len(s)register char *s;{ register char *t;
t = s; for (;;) { if (!*t) return t - s; ++t; if (!*t) return t - s; ++t; if (!*t) return t - s; ++t; if (!*t) return t - s; ++t; }}
试了一下编译可以通过,也可以正常运行...
估计跟
unsigned int str_len(register char *s){ register char *t;
t = s; for (;;) { if (!*t) return t - s; ++t; if (!*t) return t - s; ++t; if (!*t) return t - s; ++t; if (!*t) return t - s; ++t; }}
是等价的...
可是不知道为什么要来四次if (!*t) return t - s; ++t;
不知道跟一次有什么区别...
——————————————————————————————————
我的解答:
1、是老板本的C吧,在老版本C语言中,参数类型说明允许放在函数说明部分的第2行单独指定。
例如:
int fun(s)
int s;
{
...
}2、这里写四条 if (!*t) return t - s; ++t;可能是考虑到处理器采用流水线结构。早期经典的奔腾有5级流水线结构,奔腾II有12级超流水线结构,而Pentium 4的流水线就长达20级。而经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。
(关于流水线可查看:
1)、CPU的流水线:
http://www.blueidea.com/bbs/NewsDetail.asp?id=1821795)
2)、pipeline较详细说明:
http://www.cs.umass.edu/~weems/CmpSci535/Discussion16.html
3)、《Starting Down the Pipeline》:http://faculty.uwb.edu/aberger/CSS422SP05/Articles/Pipelines%20part%201%20and%202.pdf
4)、The Intel Pentium 4 processor 20 stages of pipeline introduce:
http://www.karbosguide.com/hardware/module3e14.htm
这里是地址的运算,所以我猜想可能是这个原因吧。
不知道是不是这样,请高手指点!(完)计算机基础教程网
一个奇怪的函数参数定义及解答
VB.NET里奇怪的数组赋值现象
自己写的一个图表控件
一个操作注册表的类
c#中在DataGrid里创建一个弹出式窗口…
[GDI+]如何将一个彩色图像转换成黑白…
一个用Visual C#做组件的简单例子…
IISManager V1.1 是一个在线管理IIS,…
学习c#的事件时写的一个小程序
如何让一个函数返回多个值(C#)
用C#给程序加启动画面并只允许一个应…
一个通用的Confirmation Page类…
发布一个数据操作底层类
VB 二进制块读写类模块应用实例,包括…
开发花絮:一个DataList的ItemComman…
设计的一个计算器类的源代码,很简陋哦…
vb.net实现一个自定义类数组的排序
利用Visual C#打造一个平滑的进度条…
表单启动太慢时显示一个等待图标(类似…
[原创]一个通用的Datagrid导出Excel打…
列出所有的sheet,然后点击其中的一个…
自己写的一个图表控件
一个操作注册表的类
c#中在DataGrid里创建一个弹出式窗口…
[GDI+]如何将一个彩色图像转换成黑白…
一个用Visual C#做组件的简单例子…
IISManager V1.1 是一个在线管理IIS,…
学习c#的事件时写的一个小程序
如何让一个函数返回多个值(C#)
用C#给程序加启动画面并只允许一个应…
一个通用的Confirmation Page类…
发布一个数据操作底层类
VB 二进制块读写类模块应用实例,包括…
开发花絮:一个DataList的ItemComman…
设计的一个计算器类的源代码,很简陋哦…
vb.net实现一个自定义类数组的排序
利用Visual C#打造一个平滑的进度条…
表单启动太慢时显示一个等待图标(类似…
[原创]一个通用的Datagrid导出Excel打…
列出所有的sheet,然后点击其中的一个…
相关栏目导航
