函数可以把大的计算任务分解成若干个较小的任务,一个设计得当的函数可以把程序中不需要了解的具体操作隐藏起来,从而使整个程序结构更加清晰,并降低修改程序的难度。C语言在设计中考利了函数的高效性与易用性这两个因素,C语言程序一般都由许多小的函数组成,而不是少量较大的函数组成。
1)函数的定义形式:
返回值类型 函数名(参数声明表)
{
声明和语句
}
函数定义中的个构成部分都可以省略,最简单的函数如下:
dummy()
{
}
该函数不执行任何操作也不返回任何值,它可以在程序开发期间用以保留位置(留待以后填充代码)。如果函数定义省略了返回值类型,则默认为int类型。
程序可以看成是变量定义和函数定义的集合。函数之间的通信可以通过参数、函数返回值以及外部变量进行。函数在源文件中出现的次序可以是任意的,只要保证每一个函数不被分离到多个文件中,源程序就可以分成多个文件。
被调用函数通过return语句向调用者返回值,return语句的后面可以跟任何表达式:
return 表达式;
调用函数可以忽略返回值,在任何情况下,如果函数没有成功地返回一个值,那么它的“值”
肯定是无效的。
2)举例函数的调用
1.基础函数的调用
/* 函数的使用范例1 */
#include<stdio.h>
int max(int a, int b); //定义max函数
/* 测试调用max函数 */
int main(int argc, char *argv[])
{
int i , j, p;
i = 100;
j = 200;
p = max(i, j ); //调用max函数
printf("%d\n", p);
return 0;
}
/* max函数:返回最大值 */
int max(int a, int b)
{
int x;
x = (a > b ? a : b);
return x;
}
在以上例子中,我们要注意 3 个地方:
第一,函数的声明。每一个函数在使用之前,都必须先声明,函数的声明是要向编译器说明这个函数的样子,他会返回什么,叫什么名字,需要什么参数,将情况说清楚,才能使用这个函数,否则编译器会认为你在使用一个它也不认识的东西,会报错或者警告。
第二,函数的调用。调用函数来实现他的功能,一旦调用函数,程序就会从调用语句那里直接跳转到函数的定义语句的地方执行,直到从该函数返回为止。
第三,函数的定义。函数一被调用,就跳转到定义的地方。这是一个函数具体做什么事情的地方。
再举个例子吧:
/* 基础函数的调用2,返回 */
#include<stdio.h>
char sum(int a, char b);
/* 调用sum函数 */
int main(int argc, char *argv[])
{
int i, j, x;
printf("请输入两个数字:\n");
scanf("%d%d", &i, &j);
x = sum(i, j );
printf("%d\n", x);
return 0;
}
char sum(int a, char b)
{
int c;
c = (a + b);
return c;
}