为什么需要函数原型?
在ANSI C新标准中,允许采用函数原型方式对被调用函数进行说明,其一般格式如下:
返回值类型 函数名(参数表)
为什么需要函数原型?
函数原型能告诉编译器此函数有多少个参数,每个参数分别是什么类型,函数的返回类型又是什么。当函数被调用时,编译器可以根据这些信息判断实参个数是否正确,类型是否正确等。函数原型能让编译器及时地发现函数调用时存在的语法错误。
若有一个函数原型如下:
Int getItem(int *, char k);
当 getItem() 函数被调用是,编译器就会检查调用函数的实参是不是两个?第一个实参是不是一个指针或一个地址?若你将一个字符串常量作为第二个实参,编译器一定会提示传递的参数与原型中的类型不匹配.
总而言之,函数提供了一种判断函数是否被正确调用的语法检查机制。
什么时候使用函数原型?
当被调用函数的定义出现在主调用函数之后时,应在调用语句之前给出函数原型。如果在被调用之前,没有给出函数原型,编译器将会把第一次遇到的该函数定义作为函数的声明,并将函数返回值类型默认为 int 型。那么当函数返回值类型为整型时,就无须给出原型了呢?那你错了,这种偷懒的方法将使得编译器无法对实参和形参进行匹配检查。若调用函数时参数使用不当,编译器也不会再给你善意的提醒,你也许会得意于程序的安全通过,但你很可能将面临类型不匹配所带来的系统崩溃的危险。
分享到:
相关推荐
如果读者对C语言可变参数函了解不多,可参考拙文「亲密接触C可变参数函数」,本文不再讲述C语言可变参数函数本身的定义,以及va_start、va_arg和va_e
不过,我们前面反复说过,学习我的专栏,并不只是让你掌握知识,更重要的是锻炼你分析、解决问题的能力,锻炼你的逻辑思维能力,所以,今天我们继续把访问者模式作为引子,
专栏C语言综述的学习流程Xmind图,它是C专栏的配套资源,学习C的字典,节省查找的时间
CSDN博客分类专栏图标,编辑修改分类专栏配图可以变成静态图片,图片共15张,多种颜色,图片主体都为大写字母C,非常好看
更新时间:2020-08-20 10:36:2207 生命周期:为什么生命周期:为什么 React v16 产生了新的生命周期函数产生了新的生命周期函数为什么为
PE文件格式详解;PE文件格式解析;反汇编资源;
数学专栏课外加餐(一)丨我们为什么需要反码和补码?.pdf
1、C语言之scanf()函数简要介绍1(格式化字符篇)案例程序 2、建议配合本专栏相关文章学习 3、适用于C语言初学者 4、本文件下载永久免费
【专栏内审007】为什么您的审计报告写不好?原来这5项经验您还不知道!.pdf
挑战月薪25k。设计模式实现,框架源码解读,分布式微服务解决方案,海量数据高并发解决方案,中间件,自动化构建与部署,性能调优与故障排除。该资源是我所有付费专栏的文档,里面有我所有付费专栏的博文。
前言无论是应用程序首次渲染还是更新渲染,在解析工作单元的时候React均需要执行「协调」算法以获取下一个Fiber 结点。那么 React 中的「协调」算法到底
本思维导图详细列举了C语言从初阶到进阶的所有知识点,对应文章专栏《C生万物》,教学内容由浅入深,文章通俗易懂,细致到位,富含经典教学案例。适合C/C++软件开发人员、在校大学生、其他领域的创作者,无论是初学...
C语言是编程初学者最需要掌握的一个语言,对C语言了解地足够透彻,对于对其他语言的理解就会更加轻松。而且正是由于其没有那么大的便捷性,对我们编程的能力会有更多的提升。 这篇集合是我对C语言基础语法的一个讲解...
SpringBoot专栏教程-邮件.pdf
Go语言基础系列代码
炮灰的专栏 - CSDNBlog.mht 09[那是什么鬼东西] - 炮灰的专栏 - CSDNBlog.m <br> 10[粒子系统的实现] - 炮灰的专栏 - CSDNBlog.m <br> 11[粒子系统的实际应用] - 炮灰的专栏 - CSDNBl <br> 12[红+绿+蓝...
我是如何创作“趣谈网络协议”专栏的?1
《YOLOv8改进实战专栏》专栏介绍 & 专栏目录-CSDN博客.mhtml
本项目是一个非官方的知乎专栏app安卓项目源码,数据来源:http://zhuanlan.zhihu.com/项目内置了一些默认关注的用户可以显示所有内置专栏作者最近一周的文章列表,并且所有的文章会按时间排序。还可以查看原网页。 ...