文档介绍:第5章函数与程序结构
苏小红******@hit.
C语言大学实用教程
1
内容提要
函数定义、函数调用、函数原型、函数返回值
难点:函数的参数传递与返回值
全局变量、自动变量、静态变量、寄存器变量
难点:变量的作用域与存储类型
程序调试
结构设计与模块化
程序设计的艺术
程序设计有两大最高级的艺术
算法设计艺术
结构设计艺术
函数(function)是结构设计的最基本单位
“一个程序应该是轻灵自由的,它的子过程就象串在一根线上的珍珠。”
Geoffrey James的《编程之道》
用函数解决问题
打印阶乘表的程序……
函数把较大的任务分解成若干个较小的任务,并提炼出公用任务
程序员可以在其他函数的基础上构造程序,而不需要从头做起
设计得当的函数可以把具体操作细节对程序中不需要知道它们的那些部分隐藏掉,从而使整个程序结构清楚
分而治之、信息隐藏
函数的分类
库函数
自定义函数
函数定义(definition)
返回值类型函数名(参数表){ 函数体 return 表达式;}
返回值类型与return语句配合
如果不需要返回值,则应该用void定义返回值类型,同时return语句之后不再需要任何表达式
当函数执行到return语句时,就中止函数的执行,返回到调用它的地方
函数内部可以定义只能自己使用的变量,称内部变量。参数表里的变量也是内部变量
函数名命名
Windows风格函数名命名
用大写字母开头的单词组合而成
变量名形式
“名词”或者“形容词+名词”
如变量名oldValue与newValue等
函数名形式
“动词”或者“动词+名词”(动宾词组)
如函数名GetMax()等
对函数接口加以注释说明
/* 函数功能:实现××××功能
函数参数:参数1,表示×××××
参数2,表示×××××
函数返回值: ×××××
*/
返回值类型函数名(参数表)
{ 函数体 return 表达式;
}
计算两个整数的平均数
/*
函数功能: 计算平均数
函数入口参数: 整型x,存储第一个运算数
整型y,存储第二个运算数
函数返回值: 平均数
*/
int Average(int x, int y)
{
int result;
result = (x + y) / 2;
return result;
}
函数调用(call)
单向值传递
调用函数时,必须提供所有的参数
printf和scanf是采用变长变量表定义的函数,所以变量的个数不固定。
提供的参数个数、类型、顺序与定义时相同
有返回值时
放到一个数值表达式中,如c = max(a,b);
作为另一个函数调用的参数,如
c = max(max(a,b),c);
printf("%d\n", max(a,b));
无返回值时
函数调用表达式,如display(a,b);