前言
一个C语言程序必不可少的是main函数,它是一个程序执行的入口,也是最后的出口!有时候我们为了实现一个多次重复使用到的功能时,我们往往选择将它写成一个独立的函数,之后再main函数中通过调用该功能函数来实现具体的功能与作用,以此来减少代码的冗余!本节将会带大家看看C语言的函数的具体内容!
模块化程序设计
模块化程序设计:将一个程序划分为若干个小模块,每个模块实现一个特定的功能。在程序运行时,如果要实现某一功能,则只需要调用相应的功能模块即可。
模块化程序的特点:
(1)程序结构清晰,容易理解与编写。
(2)减低了程序的复杂性
(3)减少了代码的冗余
(4)实现了模块的独立性
函数的分类
库函数:一些常用的库文件例如:stdio.h(标准输入输出)
自定义函数:由用户自己声明自己定义自己编写的函数模块。
无返回值函数:函数的返回值类型为“void” ,不需要返回任何的结果值。
有返回值函数:函数的返回值类型为非“void”,需要在函数的最后使用关键字“return”返回一个处理结果。例如:return a;
有参函数:函数中带有参数。
无参函数:函数中不带任何参数。
函数的具体编码格式
函数返回值类型 函数名(函数参数1,函数参数2,......,函数参数n){
函数体;
}
函数的调用
一个自定义的函数在main函数中调用的前提是,该函数在main函数之前已经进行声明或者改函数的代码编写位于main函数之前。
函数的更具是否有参数可以分为有参调用和无参调用, 函数在调用时必须要与函数的参数类型以及意义进行匹配,并且按照函数的返回值类型返回相应的返回值。
常见的函数调用形式:
y=sqrt(x);
c=max(a,b);
(3)函数参数: y=sqrt(1-cos(x));
函数的递归调用
一个函数直接或者间接的调用自身叫做函数的递归调用,例如典型的“猴子吃桃”问题就是使用递归调用来实现的。
上面的式子就是一个非常典型的递归调用。
函数调用中的“形参”与“实参”
形参:形参动态分配存储空间,只会在调用时进行分配,函数调用结束后自动释放内存空间。
实参:实参必须有具体的值,具有实际意义,实参可以是“常量”、“变量”、“表达式”、
注意:实参与形参的的数据类型必须一致,且顺序一致,个数相同。
函数的局部变量与全局变量
局部变量:在函数内部定义,只在本函数内有效。
全局变量:在函数外定义,有效范围从定义变量的位置开始到本程序结束为止。例如:宏定义。
函数程序示例
函数功能:从用户端接收用户输入的a与b的值,求解a+b的值:
程序源代码:
#include <stdio.h>
int sum(int x,int y); //函数声明
void main() //main函数
{
int c=0;
int a,b;
printf("请输入a的值:");
scanf("%d",&a);
printf("请输入b的值:");
scanf("%d",&b);
c=sum(a,b); //函数调用
printf("a+b的值为:%d\n",c);
}
int sum(int x,int y) //功能函数,求解两数字之和
{
int sum;
sum=x+y;
return sum;
}
程序运行结果: