文档介绍:第8章函数
概述
基本思想:将一个大的程序按功能分割成一些小模块,
特点:
各模块相对独立、功能单一、结构清晰、接口简单
控制了程序设计的复杂性
提高元件的可靠性
缩短开发周期
避免程序开发的重复劳动
易于维护和功能扩充
开发方法: 自上向下,逐步分解,分而治之
2. C是模块化程序设计语言
C程序结构
C是函数式语言
必须有且只能有一个名为main的主函数
C程序的执行总是从main函数开始,在main中结束
函数不能嵌套定义,可以嵌套调用
√
√
3. 函数分类
从用户角度
标准函数(库函数)
用户自定义函数
从函数形式
无参函数
getchar()
有参函数
printf(“%d”,num)
有返回值函数
if (strcmp(str1,str2)>0)
无返回值函数
printstar()
使用库函数应注意:
1、函数功能
2、函数参数的个数和顺序,
及各参数意义和类型
3、函数返回值意义和类型
4、需要使用的包含文件
函数的定义
一般格式
合法标识符
函数返回值类型
缺省int型
无返回值void
函数体
函数类型函数名(形参类型说明表)
{
说明部分
语句部分
}
√
函数的参数和返回值
形式: (类型形参1, 类型形参2, …)
或( )
形参个数和类型的设计应根据具体应用需要
2. 返回值
是否需要返回值,由具体应用决定
形式:return(表达式); 或 return 表达式;
或 return;
功能:返回一个值
√
printstar()
{ printf("**********");
}
main()
{ int a;
a=printstar();
printf("%d",a);
}
例:不需要返回值的函数,返回类型写成void,不要缺省!缺省返回类型为int
函数有返回值,调用时用到返回值
输出:10
void printstar()
{ printf("**********");
}
main()
{ int a;
printstar();
}
函数无返回值,调用时不用返回值
√
:函数返回值类型转换
void main()
{ max(float x,float y);
float a,b;
int c;
scanf("%f,%f",&a,&b);
c=max(a,b);
printf("Max is %d\n",c);
}
max(float x, float y)
{ float z;
z=x>y?x:y;
return(z);
}
√
void main()
{ float max(float x,float y);
float a,b,c;
scanf("%f,%f",&a,&b);
c=max(a,b);
printf("Max is %d\n",c);
}
float max(float x, float y)
{ float z;
z=x>y?x:y;
return(z);
}
函数的使用
先定义, 再申明,后调用
若定义写在调用位置之前,可省略申明
2. 调用形式
函数名(实参1,实参2,…);
说明:
实参与形参个数相等,类型一致,按顺序一一对应
√
2. 调用方式
函数语句:
例 printstar();
printf(“Hello,World!\n”);
函数表达式:
例 m=max(a,b)*2;
函数参数:
例 printf(“%d”,max(a,b));
m=max(a,max(b,c));
√
无返回值函数
有返回值函数
函数调用机制及参数传递方式
1. 形参与实参
形式参数:定义函数时使用的变量名
实际参数:调用函数时用到的表达式或变量名
说明:
形参与实参类型一致,个数相同
若形参与实参类型不一致,自动按形参类型转换———函数调用转换
形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放
2. 单向传递,值拷贝
√