目录
一、函数的概述
1、定义:
函数就是用来完成一定功能的一段程序模块。
2、优点:
1)减少重复性代码。
2)可以通过函数让别人调用。
3)实现结构化(模块化)的程序设计思想。
3、重点:
函数是C语言的基本组成单位,程序由一个或多个函数组成,但是有且仅有一个主函数(main()函数)。
二、函数的分类
1、从函数实现的角度:
1)标准库函数:C语言标准库实现并使用。 例:printf() scanf() strcpy()...
2)用户自定义函数:用户自己编写代码实现。
2、从函数形式的角度:
1)有参函数:函数有参数,在调用函数的时候,要传递参数 例:sleep(1);
2)无参函数:函数没有参数 例:getchar();
3、函数:
1)主调函数
2)被调函数
三、函数的定义
1、语法格式:
类型标识符 函数名(参数表 )
{
函数体语句
}
int sum(int a,int b)
{
return a>b?a:b;
//比较a和b的大小,并返回大的那个值
}
说明:
1)返回类型:函数的返回值类型
2)函数名:遵循标识符规则
3)形参列表:用于接受主调函数传递数据,如果有多个形参需要用逗号隔开,并且每一个形参需要说明具体的类型。
2、形参和实参
1)形参:也称为形式参数,函数定义的时候指定的参数,用来接收数据的。在函数定义时,系统不会为形参分配内存空间,只有当函数调用时,才会分配空间,用来存放实参传递过来的数据,当函数调用结束后,系统会自动回收为形参分配的内存空间。
2)实参:也称为实际参数,也就是函数在调用时括号里面的东西。
3)说明:实参和形参必须类型相同。若不同时,按赋值规定自动进行类型转换。
实参可以是常量、变量、表达式,只要有确定的值。
在C语言中,实参向形参的数据传递是“值传递”,是单向传递,即只由实参传给形参,而不能由形参传回来给实参。在内存中,实参、形参占不同的存储单元,因此形参值的改变不会影响实参值。
3、函数的返回值
1)被调函数返回数据给主调函数的结果,就叫返回值(通过函数中的return语句获得的)。
2)返回值类型一般情况下需要和return语句返回的类型保持一致,如果不一样以定义函数时指定的返回值类型保持一致。
3)一个函数中可以有多个return语句,但任一时刻只有一个return语句被执行。
4)return后面的值可是常量、变量或表达式,且圆括号可有可无,返回的是其值。
例:
int max(int x,int y)
{
return (x>y ? x:y);
}
4、函数返回值的类型
1)若需要返回值,定义函数时一定要说明函数的类型。
2)凡不加类型说明符的函数,C语言按int型对待。
3)定义函数时指定的函数类型一般应和return语句中的表达式类型相同。若函数值的类型和 return语句中表达式的值不一致时,以函数类型为准。对数值型数据可以自动进行类型换(隐式转换)。
4)对于不要求返回值的函数,应用“void”定义为无类型(空类 型),以保证函数不返回任何值,而不论是否有return
四、函数的调用
1)函数语句:
把函数调用作为一个语句。
函数名(实际参数);
变量=函数名(实际参数);
2)函数表达式语句:
函数调用出现在一个表达式中,称为函数表达式。此时要求函数返回一个确定的值,已参加表达式的运算。
例如:
sum(5)+6;
3+area(1,2);
3)做函数的参数:
函数调用作为一个函数的实参 例: printf(“%d”,max(a,b));