1、函数定义的一般形式:
(1)定义无参函数的一般形式为:
类型标识符 函数名()
{
声明部分
语句部分
}
在定义函数时要用“类型标识符”指定函数值的类型,即函数带回来的值的类型。
(2)定义有参函数的一般形式为:
类型标识符 函数名(形式参数表列)
{
声明部分
语句部分
}
例:
int max(int x,int y) { int z;/*声明部分*/ z=x>y?x:y; return(z); }
(3)定义空函数的一般形式为:
类型标识符 函数名()
{}
例:
dummy()
{}
注:定义函数时不写类型标识符时,系统默认为int。
调用此函数时,什么工作也不做,没有任何作用。但其在程序开发时作为一个虚设部分常常也是很有用的。
2、参数函数和函数的值
形式参数:在定义函数时函数名后面括号中的变量名称称为形式参数(简称形参)。
实际参数:主调函数中调用一个函数时,函数名后面括号中的参数称为实际参数(简称实参),即实参出现在主调函数中。
大多数情况下,主调函数和被调用函数之间有数据传递的关系。
return后面括弧中的值()作为函数带回的值(称函数返回值)。
在不同函数之间传递数据,可以使用的方法:
参数:通过形参和实参。
返回值:用return语句返回计算结果。
全局变量:外部变量(不提倡使用)。
例:
#include <stdafx.h> #include<stdio.h> void main() { int max(int x,int y);/*max函数声明*/ int a,b,c; scanf("%d%d",&a,&b); c=max(a,b); printf("Max is %d:",c); } int max(int x,int y) { int z; z=x>y?x:y; return(z); }
关于形参与实参的说明:
(1)在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的储存单元。只有在发生函数调用时,函数中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。
(2)实参可以是常量,变量或表达式。
如:max(3,a+b);
但要求它们有确定的值。在调用时将实参的值赋给形参。
(3)在被定义的函数中,必须指定形参的类型。
(4)实参与形参的类型应相同或赋值兼容。
(5)在C语言中,实参向对形参的数据传递是“值传递”(相当与copy),单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。