文档介绍:§ 概述
一个较大的程序一般应分为若干个程序模块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。在C语言中,子程序的作用是由函数完成的。
一个C程序可由一个主函数和0到若干个子函数构成。
由主函数调用各子函数,其他子函数间也可互相调用。同一个函数可以被一个或多个函多次调用。
§ 函数定义的一般形式
1、无参函数的定义形式
类型标识符函数名( )
{声明部分
语句
}
#include <>
int main(void)
{
void printstar(); /*函数声明*/
void print_message(); /*函数声明*/
void printstar(); /*函数调用*/
void print_message(); /*函数调用*/
void printstar();
return 0;
}
void printstar() /*函数调用*/
{
printf(“****************************”);
}
void print_message() /*函数调用*/
{
printf(“ How do you do!\n”);
}
2、有参函数定义的一般形式
类型标识符函数名(形式参数列表)
{声明部分
语句
}
#include <>
int main(void)
{
int a, b, z;
scanf(“%d%d”, &a, &b);
z = max(a, b);
printf(“max=%d”, z);
return 0;
}
例如:
int max(int x, int y)
{
int z;
z = x > y ? x : y;
return(z);
}
这是一个子函数(被调函数),它不能作为一个独立的程序被编译和链接的。
其功能是选出大者。
这是主函数(主调函数),它的功能是输入两个值,调用子函数,输出返回的值。
函数调用
3、空函数
形式为:
类型说明函数名( )
{ }
小结
本节的要点是:
什么是无参函数
什么是有参函数
什么是空函数
掌握函数的定义形式。
§8·3 函数参数和函数的值
在调用函数时,大多数情况下,主调函数和被调用函数之间有数据传递关系。这就是前面提到的有参函数。
§ 形式参数和实际参数
在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称“形参”);
在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称“实参”)。
#include <>
int main(void )
{
int a,b,c;
scanf(“%d, %d, %d”, &a, &b); c = max(a, b);
printf(“Max is %d”, c);
return 0;
}
max(int x, int y) /*定义有参函数max*/
{
int z;
z = x > y ? x : y;
return(z);
}
例:
主函数
子函数
函数
调用
⑴在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数max中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。
⑵实参可以是常量、变量或表达式,如:
max(3,a+b);
但要求它们有确定的值。在调用时将实参的值赋予形参。
关于形参与实参的说明