学习目标
1. 掌握函数的定义与调用:能够正确编写函数定义,包括返回类型、函数名、形参列表及函数体,并理解函数调用的执行流程。
2. 理解形参与实参的区别:明确形参(形式参数)和实参(实际参数)的概念,掌握值传递的单向性及内存分配特点。
3. 熟练使用返回值机制:正确使用return 语句返回结果,理解返回值类型与函数类型的匹配规则及类型转换机制。
4. 区分函数类型与用途:掌握void 类型函数的定义,避免因未声明返回值类型导致的未定义行为。
学习重点
1. 函数定义格式
语法:类型说明符 函数名(形参列表) { ... }
注意:若省略类型说明符,默认返回int 型,但建议显式声明以增强可读性。
示例:
int max(int x, int y) {
return x > y ? x : y;
}
2. 参数传递机制
形参与实参:
形参是函数定义中的变量,用于接收实参的值。
实参可以是常量、变量或表达式,但类型需与形参兼容。
值传递:单向传递,形参的修改不影响实参(因两者占用不同内存单元)。
示例:
c = max(a, b); // a、b 是实参,x、y 是形参
3. 返回值处理
return 语句:
可返回表达式,支持多个return,但需注意代码可读性。
若返回值类型与函数类型不一致,系统自动转换(可能导致精度损失)。
无返回值函数:必须声明为void,且无需return。
4. 常见易错点
形参必须单独声明类型,如int max(int x, int y)(不可合并为int x, y)。
未声明返回值类型的函数默认返回int,但可能导致潜在错误。
若函数未使用return 且非void 类型,返回值不确定。
一.为什么引用函数
(1)更易于管理
(2)避免错误(函数其实现一定任务的语句集合的名称)
二.函数的类型
1. 标准函数(库函数)系统自带
2. 用户自定义函数
说明:(1)一个程序由一个或多个函数组成
(2)函数之间可以相互调用,但不能用main()函数
1.用户自定义函数 :用户自定义函数
2.标准函数:系统自带函数
main()可以调用任何函数,按其他函数不能调用main()
3.程序永远从main()开始执行
函数调用结束以后,回到调用出,继续往下执行
三.函数的定义
1.定义函数
例如: int sum(int a,int b) //定义函数
{ int c //定义变量
c=a+b; //处理
return c;
} //返回值
(1)int: 表示函数返回值类型为int型
函数类型说明(省写):long,int,double,float,char,void(无返回值)
(2)sum 函数名:命名规则与变量一致,32个关键字不能作函数名
字母、数字、下划线组成,但首字母不能为数字
(3)int a,int b 形式参数(形参):
每个形参用逗号来分开
没形参可无省略,但括号不能省
形参是由实参传入的
每个变量(形参)的数据类型不可省
如:int sum(int a,b) 错误
要写成 int sum(int a,int b)
四,函数的参数
1、 形参:函数定义 int max (int x,int y)变量
2、 实参:函数调用 max (a,b)变量/常量表达式
3、 参数的传递 要求:(1)实参类型必须要与与形参类型兼容
(2) 个数要一致
4、传递方式:(1)按值传递:形变实不变
变量/常量/常量表达式 --> 变量
(2)按地址传递: 形变实也变
数组名 --> 数组
五、函数的返回
1.为什么要使用函数return?
希望函数调用后返回一个执行结果,则函数必须使用return,语句将结果返回给调用程序。
格式:return(表达式);/return 表达式;
函数返回值的类型决定函数的类型。
2.使用函数返回值的几点注意事项。
(1)一个函数可以有多个return语句,分别为指定的条件他会各自的值,当遇到第一个return语句,c语言立即终止函数的执行,执行return指定返回值并不再执行return后面的语句。
(2)若返回值是int型,可省略。
(3)若return语句中的表达式类型与函数类型不一致,将一返回值为准。
(4)若函数中无return语句,不代表无返回值,而是返回一个不确定的值,这样在主调用函数中使用的函数返回值也将不确定。
(5)若函数不需要返回值(返回计算结果),则函数定义为void型,而且在函数中不用return语句。
exit(0):正常退出。
exit(1):异常退出。
#include <stdio.h>
fun(int i,int j)
{
int x=7;
printf(“i=%d;j=%d;x=%d\n”,i,j,x);
}
main()
{
int i=2,x=5,j=7;
fun(j,6);
printf("i=%d;j=%d;x=%d\n",i,j,x);
}