`
lyunabc
  • 浏览: 551576 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

[C 语言专栏] 为什么需要函数原型?

 
阅读更多

为什么需要函数原型?
在ANSI C新标准中,允许采用函数原型方式对被调用函数进行说明,其一般格式如下:
返回值类型 函数名(参数表)
为什么需要函数原型?
函数原型能告诉编译器此函数有多少个参数,每个参数分别是什么类型,函数的返回类型又是什么。当函数被调用时,编译器可以根据这些信息判断实参个数是否正确,类型是否正确等。函数原型能让编译器及时地发现函数调用时存在的语法错误。
若有一个函数原型如下:
Int getItem(int *, char k);
当 getItem() 函数被调用是,编译器就会检查调用函数的实参是不是两个?第一个实参是不是一个指针或一个地址?若你将一个字符串常量作为第二个实参,编译器一定会提示传递的参数与原型中的类型不匹配.
总而言之,函数提供了一种判断函数是否被正确调用的语法检查机制。
什么时候使用函数原型?
当被调用函数的定义出现在主调用函数之后时,应在调用语句之前给出函数原型。如果在被调用之前,没有给出函数原型,编译器将会把第一次遇到的该函数定义作为函数的声明,并将函数返回值类型默认为 int 型。那么当函数返回值类型为整型时,就无须给出原型了呢?那你错了,这种偷懒的方法将使得编译器无法对实参和形参进行匹配检查。若调用函数时参数使用不当,编译器也不会再给你善意的提醒,你也许会得意于程序的安全通过,但你很可能将面临类型不匹配所带来的系统崩溃的危险。

分享到:
评论

相关推荐

    揭密X86架构C可变参数函数实现原理_海枫的专栏-CSDN博客1

    《揭秘X86架构下C语言可变参数函数的实现原理》 在计算机编程中,C语言的可变参数函数是一大特色,它允许函数接受一个可变数量的参数列表。这种灵活性使得函数能处理不同数量的参数,而无需预先定义固定的参数数量...

    Go语言基础系列代码(配合专栏使用)

    本压缩包文件“Go语言基础系列代码”是为了配合相关专栏学习而准备的,包含了多个Go语言基础概念的示例代码,旨在帮助初学者更好地理解和实践Go语言的基本语法和特性。 1. **Go语言的基本结构**:Go程序通常由一个...

    CSDN分类专栏图标icon

    综上所述,"CSDN分类专栏图标icon"是CSDN为提升博客分类体验而精心设计的一套图形元素,它们以大写字母"C"为核心,结合多样的颜色和形状变化,体现了IT领域的多样性,并通过静态图片形式提供稳定且高效的用户体验。...

    专栏C语言综述的学习流程Xmind图

    专栏C语言综述的学习流程Xmind图,它是C专栏的配套资源,学习C的字典,节省查找的时间

    Python-将小专栏的内容通过markdownpdf格式导出

    在本教程中,我们将聚焦于如何利用Python来将小专栏的内容转换为Markdown或PDF格式。这对于知识整理、分享和长期保存非常有用。我们将主要探讨以下几个方面: 1. **Markdown语法基础**:Markdown是一种轻量级的标记...

    “C语言EasyX游戏开发”专栏旨在向读者介绍使用C语言和EasyX图形库进行游

    “C语言EasyX游戏开发”专栏旨在向读者介绍使用C语言和EasyX图形库进行游戏开发的基本知识和技能。如果你对游戏开发感兴趣,但对复杂的游戏引擎和高级编程语言感到不知所措,那么本专栏将是你的入门游戏

    专栏写作合同书

    专栏写作合同书是专业作家与媒体或平台签订的协议,规定了作家为特定栏目提供定期原创内容的责任和获得相应报酬的权益。 首先,我们来了解一下“专栏写作”的概念。专栏是指在报纸、杂志、网站等媒体上固定出现的一...

    CSDN自定义专栏封面

    在IT行业中,CSDN(China Software Developer Network)是一个知名的技术社区,为广大程序员提供学习、交流和分享的平台。自定义专栏封面是CSDN为了提升用户个性化体验和栏目识别度而推出的一项功能。通过自定义专栏...

    软件加密破解专栏

    PE文件格式详解;PE文件格式解析;反汇编资源;

    C语言源码及文档系统编程

    同时,专栏文章则通常涵盖了C语言开发中的实际应用、技术趋势、最新工具和库等内容,为你提供与其他C语言开发者交流和学习的平台。通过阅读源码、文档和专栏,你将不断提升自己的编程技能,并在C语言的世界中探索出...

    “知”媒体的探索:知乎为什么要推出专栏.docx

    ### “知”媒体的探索:知乎为什么推出专栏 #### 一、背景介绍 知乎作为中国领先的问答社区之一,一直以来都是知识分享和交流的重要平台。近年来,随着自媒体的兴起和发展,知乎也开始积极探索新的内容形式,其中...

    C语言之scanf()函数简要介绍1(格式化字符篇)

    1、C语言之scanf()函数简要介绍1(格式化字符篇)案例程序 2、建议配合本专栏相关文章学习 3、适用于C语言初学者 4、本文件下载永久免费

    【专栏内审007】为什么您的审计报告写不好?原来这5项经验您还不知道!.pdf

    【专栏内审007】为什么您的审计报告写不好?原来这5项经验您还不知道!.pdf

    本博客专栏所根据的word文件

    标题中的“本博客专栏所根据的word文件”表明这是一个基于Word文档的知识分享系列,可能包含了作者在学习或工作过程中对SPSS、Java、C和Matlab等IT技术的深入理解和应用实例。描述中的“spss,java,c,matlab”则...

    29 React v16 版的协调算法是什么样的呢?慕课专栏1

    通过提供自定义的`HostConfig`配置,开发者可以为不同的渲染目标(如浏览器的DOM或React Native的原生组件)定制渲染行为。 协调过程的起点是在`render`阶段,React开始构建`workInProgress`树。在每个工作循环中,...

    P6级付费专栏文档.zip

    挑战月薪25k。设计模式实现,框架源码解读,分布式微服务解决方案,海量数据高并发解决方案,中间件,自动化构建与部署,性能调优与故障排除。该资源是我所有付费专栏的文档,里面有我所有付费专栏的博文。

    07 生命周期为什么 React v16 产生了新的生命周期函数慕课专栏1

    在React v16中,生命周期函数的变更主要是为了提高组件的稳定性和性能,以及更好地适应新的渲染机制。React团队引入了新的生命周期方法`getDerivedStateFromProps`和`getSnapshotBeforeUpdate`,同时弃用了`...

    C语言基础——专栏索引篇

    C语言是编程初学者最需要掌握的一个语言,对C语言了解地足够透彻,对于对其他语言的理解就会更加轻松。而且正是由于其没有那么大的便捷性,对我们编程的能力会有更多的提升。 这篇集合是我对C语言基础语法的一个讲解...

    初探swift语言的学习笔记九(OC与Swift混编) - fengsh998的专栏 - 博客频道 - CSDN.NET1

    这篇博客主要讨论的是在iOS开发中如何进行Objective-C(OC)和Swift的混合编程,这是在Swift语言推出后,很多开发者需要面对的问题。Swift作为苹果公司推出的新型编程语言,具有语法简洁、类型安全等优点,但同时,...

    C语言复习资料.zip

    C语言是一种强大的、通用的、面向过程的编程语言,它被广泛应用于系统开发、软件工程、嵌入式系统以及各种应用程序的编写。由于其简洁、高效和灵活性,C语言成为了学习计算机科学的基础之一,无论是初学者还是专业...

Global site tag (gtag.js) - Google Analytics