1.定义
(1)无参函数的定义形式
类型标识符 函数名()
{
语句
}
(2)有参函数定义的一般形式
类型标识符 函数名(形式参数列表)
{
声明部分
语句
}
2.形式参数与实际参数
函数在调用时把一些表达式作为参数传递给函数。函数定义中的参数是形式参数,函数的调用者提供给函数的参数是实际参数。在函数调用之前,实际参数的值将被复制到这些形式参数中。
3.参数传递
(1)简单变量或数组元素作为函数参数
实参变量的值单向传递给形参,调用函数不会影响实参变量的值。
(2)指针变量或数组名作为函数参数
实参变量的值单向传递给形参,调用函数不会影响实参的值(指针变量中所存地址),但可以改变实参所指向变量的值。
(3)数组名作函数参数
数组名本身是一个特殊的指针变量,其值是数组的首地址,因此作为实参时其传给形参的是内存中某指定单元的地址,调用过程中形参数组与实参数组占用同一段内存单元,因此对形参数组的操作也就是对实参数组的操作,对实参数组和形参数组来说数据传递表现为“双向“的,而对实参变量和形参变量而言数据的传递仍然是单向的。
(4)结构体数组作函数参数
结构体数组元素作为实参
采取单向值传递方式将结构体变量所占的内存单元的内容全部顺序复制给形参。
结构体数组名作为实参
传递给形参的是内存中已指定单元的地址,调用过程中形参数组与实参数组占用同一段内存单元。
4.如何编写有多个返回值的C语言函数
实例:编写函数求三个数中的最大值和最小值。
#include<stdio.h>
#include"conio.h"
int max,min;
void max_min(int a,int b,int c)
{
max=a;
min=a;
if(max>b)
{
if(max>c)
{
max=a;
if(c>b)
{
min=b;
}
else
{
min=c;
}
}
else
{
max=c;
min=b;
}
}
else if(b>c)
{
max=b;
if(c>a)
{
min=a;
}
else
{
min=c;
}
}
else
{
max=c;
min=a;
}
}