目录
1.C语言中函数分类:
1.库函数

2.自定义函数
int fun_name(part1)
{
statement;//语句项
}
int 为返回类型
fun_name 函数名
part1 函数参数
2.函数参数和函数返回值
1.形式参数和实际参数
(1)在定义函数时,函数名后面括号中的变量为形式参数(形参)。
(2)在主调函数中,函数名后面括号中的参数(可以是一个表达式)为实际参数(实参)。
注:
1.实参可以是常量,变量或表达式
2.在被定义的函数中必须指定形参类型
3.实参与形参的类型应相同或赋值相兼容
4.在内存中,实参单元与形参单元是不同的储存单元,只能由实参传给形参即单向传递
5.在调用函数时,给形参分配存储单元,并将实参对应的值传递给该存储单元。调用结束后,形参单元被释放,实参单元仍保留并维持原值。
2.函数的返回值
(1)函数的返回值就是通过函数调用使主调函数能得到一个确定的值。
(2)表达式:return表达式;或return(表达式);或return ;
(3)return 语句中的表达式值的类型必须与函数首部所说明的类型一致。如果不一致,则以函数值的类型为准,由系统自动进行强制转换。
(4)当函数没有指明返回值,或没有返回语句时,函数返回一个不确定的值,为了使函数不返回任何值,可以使用void定义无类型函数。
#include <stdio.h>
//get_max函数的设计
int get_max(int x, int y) // get_max前的int为函数的返回类型;
{
return (x>y)?(x):(y); //x是否大于y如果是返回x如果不是返回y;
}
//调用结束后,形参单元被释放也就是数据无了,实参单元仍保留并维持原值。
int main() //实参与形参的类型应相同或赋值相兼容,num1与num2为int类型
//所以接收它们的x与y也是int类型。x与y是形参。
{
int num1 = 5;
int num2 = 10;
int max = get_max(num1, num2); //num1与num2是函数实参,用逗号隔开;
printf("max = %d\n", max);
return 0 ;
}
3.函数的调用
1.函数声明
2.函数调用的一般形式
一般形式:函数名(实参);
函数调用可分为调用无参函数和调用有参函数两种:
(1)调用无参函数,不用加实参,但括号不能省略;
(2)调用有参函数时,若有多个实参,各参数间用逗号隔开。实参与形参类型要一致。
3.函数调用的方法
(1)函数语句:把函数调用作为一个语句,这时该函数只需要完成一定的操作而不必有返回值。
(2)函数表达式:一个函数出现在一个表达式中,要求有一个确定的返回值提供给表达式。
(3)函数参数:函数调用作为一个函数的实参。
调用函数和被调用函数之间的数据传递方式:
1.实参与形参之间进行数据传递。
2.通过return语句把函数返回到主调函数中。
3.通过全局变量
4.函数的嵌套调用
注: 函数可以嵌套调用,但是不能嵌套定义。
#include <stdio.h>
void new()
{
printf("你好\n");
}
void hello()
{
int i = 0;
for(i=0; i<3; i++)
{
new();
}
}
int main() //程序入口
{
hello(); //开始调用hello()函数,后进入for循环,调用3次new()函数,
return 0; //new函数功能为打印你好;
}
4.函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接 调用自身的 一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解, 递归策略 只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
使用递归法解决问题,须符合的条件:
(1)可以把要解决的问题转化成一个新的问题。而这个新的问题的解决方法与原来的解决方法相同,只是所处理的对象有规律的递增或递减。
#include <stdio.h>
void print(int n) //n=1234
{
if(n>9) //1234>9为真进入print(2)函数,123>9为真又进入print(3)函数,12>9为真
//又进入print(4)函数,直到1>9为假时不执行print函数,开始打印。
{ // 1234/10=123;123/10=12;12/10=1;(整数除整数结果为整数)
print(n/10);
} //返回开始进行一级一级进行打印 1%10 12%10 123%10 1234%10;
printf("%d ", n%10); // 1%10=1;12%10=2;123%10=3;1234%10=4;(%前后须为整数)
}
int main()
{
int num = 1234;
print(num); //num实参传递数据给形参n
return 0;
}