在学习C语言函数指针的过程中,我发现了函数的参数列的一些问题:无论参数部分是否填入类型,编译均可通过。
查阅资料后发现C语言中有两种函数参数风格:ANSI和K&R。ANSI是我们所学习的风格;K&R则是老式的,是编写Linux内核所使用的风格。
int foo(void) 还有 int foo(int a, int b)就是ANSI风格的。它的特点是参数都有类型
对应的,int foo() 和 int foo(a,b)是K&R风格,它使用初始化列:
//无参数的K&R风格接受任何参数,后者的声明方法是接受两个任意类型的参数
int foo(); //int foo(a,b);
//参数类型声明在函数体前面
int foo(a, b)
int a;
int b;
{
return a+b;
}
当我们写下int foo()的时候,我们实际上已经在不知不觉中使用了K&R风格的函数声明了!当然后面的函数体部分奇怪的结构仅限C编译器,这些代码以cpp后缀编译时无法通过。
函数调用时,编译器检查的是函数声明。因此假如函数声明是形如int foo()的,无论我们函数体中实际传入多少参数,编译都不会报错。这使得很多情况下我们无法检查出问题。因此并不推荐这样的写法。
因此在绝大多数C开发中,我们应该使用ANSI风格,在没有参数的函数都要在参数部分注明void,以便编译器进行参数检查,从而尽可能地减少人为的错误。
拓展:K&R风格不仅包括函数参数,还有其他一系列约定。列举一些有趣的内容:
1. 使用8个字符缩进:有人可能抱怨缩进导致一行无法容纳许多字符。但是他们的看法是,超过3级缩进说明代码需要重构
2. 命名尽量通俗:以变量类型命名的微软经常开发出糟糕的代码
3. 大括号的位置:非函数语句起始大括号在行尾,结束大括号在行首;函数语句的大括号都在行首
当然这些内容仁者见仁智者见智了。
文章浏览阅读4.6k次,点赞2次,收藏2次。NodeJS使用淘宝 NPM 镜像/NPM使用国内源这是一个完整npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为10分钟一次以保证尽量与官方服务同步。当前registry.npm.taobao.org是从r.cnpmjs.org进行全量同步的. 当前npm.taobao.org运行版本是:[email protected] 本..._npm.taobao.org
文章浏览阅读6.1k次。// 经纬度转换为球坐标double torad(double deg){ return deg/180*acos(-1);}void get_coordinate(double R,double lat,double lng,double &x,double &y,double z){ lat = torad(lat); lng = torad(lng);_经纬度转3d
文章浏览阅读292次。一、描述 本设计用朴素的手法表现空间的本)质,传达文化的内涵。营造出一个个充满张力、层次丰富的办公空间。 各区域即独立又相互融合,亦可根据公司的使用和发展灵活调配。空间布局上层次分明,以树枝的络脉走向自然过渡到每个办公空间,用简洁的线条表现形式美,再配以恰到好处的灯光,营造出一个简洁明朗、自然通透的现代空间。二、效果图相关资源:室内设计——办公楼创意室内设计(包含预览图jpg和.psd文件).zip..._办公楼内部设计
文章浏览阅读3.5k次,点赞4次,收藏28次。目录landsat8landsat8_landsat8的idl处理代码
文章浏览阅读7.5k次,点赞3次,收藏7次。1、mapmap和javascript中的数组的map方法类似,不过这里为了结合下面的demo,我先用map做一个我们不想要的效果: const getData = (param) => { return of(`return: ${param}`).pipe( delay(Math.random() * 1000) ) }; from([1, ..._concatall() mergeall
文章浏览阅读735次。* 发布文章 * 过程: 先进入blog所在的文件夹,在终端输入 进入blog所在文件夹每次部署的步骤,三步 - hexo clean - hexo generate - hexo deploy* 增加tag * hexo new page ‘blog' 在source里面多了个目录life,里面有个index.md,也可以手动建立。页面格式和文章一样接着把链接加上th..._hexo新建博客
文章浏览阅读4.7w次,点赞63次,收藏334次。如何评估随机森林模型以及重要预测变量的显著性说到随机森林(random forest,RF),想必很多同学都不陌生了,毕竟这些机器学习方法目前非常流(fàn)行(làn)……白鱼同学也曾分..._incnodepurity
文章浏览阅读1k次,点赞2次,收藏6次。显微镜下的MEMS结构(注意图片上的刻度,是微米哦)文章来源:硬件十万个为什么卡西欧早年就以电机马达、继电器等机电产品闻名。如今的卡西欧本身就是MEMS的制造商之一,用MEMS的思路解决..._soc。mems
文章浏览阅读3.2w次,点赞48次,收藏33次。IntelliJ IDEA 创建Spring Boot 项目&整合jdbc详细步骤_idea2022.2.5
文章浏览阅读2.3w次,点赞11次,收藏73次。Windows Server2019安装详细教程_windows server 2019安装教程
文章浏览阅读457次。关于这个问题我是第一次写,重点是本人上班第一天就碰到了。解决时间四小时方法亲测首先删除 /etc/hosts.deny中自己的ip删除 有可能不止一个然后在/etc/hosts.allow中添加自己的ip转载于:https://www.cnblogs.com/long777/p/7337617.html..._denyhosts经常拉黑
文章浏览阅读4.7k次。html<swiper ref="mySwiper" :options="swiperOptions"> <swiper-slide>Slide 1</swiper-slide> <swiper-slide>Slide 2</swiper-slide> <swiper-slide>Slide 3</swiper-slide> <swiper-slide>Slide 4</s_swiper4 当前页索引值