C语言自定义函数(图文详解)


本文摘自PHP中文网,作者烟雨青岚,侵删。

函数的概念

每个C程序都至少有一个函数,即主函数 main() ,如果程序的任务比较简单,全部的代码都写在main()函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main()函数中,main()函数将非常庞大臃肿,结构复杂,代码重复。

我们可以根据程序的逻辑和任务的分工把代码划分到不同的自定义函数中,main()更关心业务逻辑和处理流程,需要执行具体任务的时候,调用这些自定义的函数就可以了。

为了方使理解,我们把函数分为两种:一种是库函数,一种是自定义函数。

库函数是C语言提供的,或系统提供的,实现了某些基本的功能,例如scanf、printf,在程序中可以直接使用。

自定义函数是程序员为了完成某项任务而编写的函数,目的是为了实现某项的功能或让主程序更简洁。程序员在使用自定义函数之前,必须先声明和定义。

自定义函数的声明

自定义函数声明就是告诉编译器函数名称及如何调用函数,包括函数返回值的数据类型、函数名称、参数列表。

有些程序员也将函数声明说成是函数原型,只是用词不同,意思是一样的。

C语言中的声明函数的语法如下:

返回值的数据类型return_type:函数执行完任务后,可以返回一个值,return_type是函数返回的值的数据类型,可以是int、char、double或其它自定义的数据类型。有些函数只执行任务而不返回值,在这种情况下,return_type用是关键字 void表示。

无返回值的函数的声明语法如下:

函数名称function_name:函数名称是标识符,命名规则与变量名称的命名规则相同。

函数的参数列表parameter list:当函数被调用时,调用者需要向函数的参数传递值。参数列表包括参数的类型、顺序。参数列表是可选的,也就是说,函数可以没有参数。

无参数的函数的声明语法如下:

函数声明示例:

声明了一个函数,返回值是int类型,函数名是checksc,函数只有一个参数int height,注意,函数的声明语句最后的分号不能少。

如果把自定义函数比喻成工具,函数的声明就是这个工具的设计图纸。

自定义函数的定义

自定义函数是工具,如果想让这个工具能被使用,光有设计图纸还不行,要把工具制造出来,函数的定义就是这个工具的实体,提供了函数的实际主体,为了实现函数的功能,程序员为需要函数编写代码。

C语言中的函数定义的语法如下:

函数定义的return_type、function_name和parameter list必须与函数声明一致。

函数主体包含为了完成任务需要执行语句的集合,放在花括号内。

示例:

07982e7f15c6af3b1462cabb2f4b37a.png

注意,不要在函数定义后面加分号,以下是错误的,初学者容易犯这种错误。

b70ea88672305e704b08cdc30424c94.png

自定义函数声明和定义的方式

如果自定义函数只在调用者程序中使用,可以在调用者程序中声明和定义,声明一般为调用者程序的上部,定义一般在调用者程序的下部,这并不是C语言的规定,而是为了让程序更方便阅读,程序员约定的写法。

自定义函数在调用者程序中声明和定义的示例(book45.c):

a8fbfeb71ecdf47bf3f65dbf237a159.png

在book45.c中,判断超女身材的函数checksc不是公共的功能,只是选秀程序使用,所以声明和定义在book45.c中。

如果自定义函数是一个公共的功能模块,例如比较两个数的大小,就可以在其它的头文件中声明(如_public.h),调用者程序需要用#include预处理指令包含该函数声明的头文件。

如果自定义函数是一个公共的功能模块,就可以在其它的程序文件中定义(如_public.c),编译的时候,要把调用者程序和自定义函数的程序文件一起编译。

在以下的示例中,函数max在_public.h头文件中声明,在_public.c程序文件中定义,在book46.c程序中被调用。

自定义函数的头文件(_public.h):

自定义函数的程序文件(_public.c):

ddb709cd6f56df01e373f75536259c2.png

调用者程序文件(book46.c)

4e7497956a3ea9bc4fd2f8a2c9704ae.png

编译命令如下:

注意:

1)在book46.c的第6行

这里包含头文件是用双引号,不是尖括号<>。一般来说 #include <> 用于包含C语言提供的库函数的头文件,#include ""用于包含程序员自定义的头文件。

阅读剩余部分

相关阅读 >>

scanf在C语言中的作用是什么?

C语言指针如何求最大值最小值

三分钟带你了解选择排序和冒泡排序的用法

C语言中输出字符串用什么符号

C语言中逻辑运算符优先级是什么?

C语言strcpy函数用法

现在学C语言用什么软件

C语言怎么删除字符串中相同字符

\0在C语言中代表什么?

C语言怎么比较两个数的大小

更多相关阅读请进入《C语言》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...