文档介绍:第四章函数
概述
函数的定义
函数的返回值
函数的调用
函数参数及其传递方式
函数的嵌套与递归调用
变量的属性
数组作为函数参数
本章学习要点:
函数的概念和定义方法
函数中各种数据的传递方法和差别
变量的作用域和存储类型(特别是static 变量的特点)
利用函数进行综合程序设计
内部函数与外部函数
C程序结构
C是函数式语言
必须有且只能有一个名为main的主函数
C程序的执行总是从main函数开始,在main中结束
主函数调用其他函数,其他函数也可以相互调用
模块化程序设计语言:C语言
概述
从用户角度
标准函数(库函数):由系统提供
用户自定义函数
从函数形式
无参函数
有参函数*
函数基本分类
printf(…)
scanf(…)
getchar()
putchar(…)
…
sort(…)
max(…)
message(…)
…
int getch() 或
int getch(void)
int printf( const char *format [, argument]... )
格式
合法标识符
函数返回值类型
缺省int型
无返回值void
函数体
函数类型函数名(形参类型说明表)
{
说明部分
语句部分
}
现代风格:
例有参函数(现代风格)
int max(int x,int y)
{ int z;
z=x>y?x:y;
return(z);
}
例有参函数(现代风格)
int max(int x, y)
{ int z;
z=x>y?x:y;
return(z);
}
函数的定义
函数类型函数名(形参表)
形参类型说明
{
说明部分
语句部分
}
传统风格:
例有参函数(传统风格)
int max(x,y)
int x,y;
{ int z;
z=x>y?x:y;
return(z);
}
例空函数
dummy( )
{ }
函数体为空*
例无参函数
printstar( )
{ printf(“**********\n”); }
或
printstar(void )
{ printf(“**********\n”); }
无参函数?
返回语句
形式: return (表达式);
或 return 表达式;
或 return;
功能:使程序控制从被调用函数返回
到调用函数中,同时把返值带
给调用函数
说明:
函数中可有多个return语句
若无return语句,遇} 时,
自动返回调用函数
若函数类型与return语句中表达
式值的类型不一致,按前者为准,
自动转换------函数调用转换
void型函数
函数的返回值
例 return 语句的示意
main()
{
int i=-4; int j=4;
int aa=test(i, j);
printf("%d",aa);
getch();
}
test (int a, int b)
{
if (a+b<0)
return a*b;
else if(a+b ==0)
return (a+b);
else {
printf("%d %d",a,b);
}
return;
}
例无返回值函数
void swap(int x,int y )
{ int temp;
temp=x;
x=y;
y=temp;
}
(本函数有问题!!)
*
调用形式
函数的调用
函数语句:
例 printstar();
printf(“Hello,World!\n”);
函数表达式:
例 m=max(a,b)*2;
函数参数:
例 printf(“%d”,max(a,b));
m=max(a,max(b,c));
对被调用函数要求:
必须是已存在的函数
库函数: #include <*.h>
用户自定义函数: 一般要加上函数类型申明(说明)
函数申明(示例)
一般形式: 函数类型函数名(形参类型[形参名],….. );
或函数类型函数名();
函数定义与函数申明不同
作用:告诉编译系统函数类型、参数个数及类型,以便检验
函数申明位置:程序的数据申明部分(函数内或外)
下列情况下,可不作函数说明
若函数返值是int型,系统自动按int型处理(不推荐!)
被调用函数定义出现在主调函数之前
有些系统(如Borland C++)要求函数申明指出函数返值类型和形参类型,并且对void 和 int 型函数也要进行函数申明*
函数申明(说明)
例函