新Visual C++大学教程 教学课件 冯博琴 第3章 语句和函数.pptVIP

  • 8
  • 0
  • 约3.81千字
  • 约 53页
  • 2015-11-19 发布于广东
  • 举报

新Visual C++大学教程 教学课件 冯博琴 第3章 语句和函数.ppt

3.5 函 数 函数是能够对数据进行处理并返回一个值的子程序。 3.5.1 函数的声明和定义 在程序中编写函数时,首先需要声明函数,然后再定义函数。 函数的声明是让编译器知道函数的名称、参数、返回值等信息;函数的定义是让编译器了解函数的功能。 1.函数的声明 在C语言中有3种方法声明函数。 (1)将函数原型写在指定的文件里,程序使用该函数时,利用#include将其包含到文件中。 (2)将函数原型写在当前文件(使用该函数的文件)中。 (3)在其他函数调用该函数前,定义该函数,此时,函数的定义将作为自己的声明。 函数原型由函数返回值、函数名称、参数列表和分号4部分组成。 对于函数原型,参数名称可以省略。例如: int TwoAdd (int , int ); 对于函数原型,参数列表部分是可选的。 如果函数没有参数,则该部分可以省略,但是括号不能省略。例如: int PrintInfo(); 2.函数的定义 函数的定义由函数头和函数体两部分组成。 函数头与函数原型类似,只是参数列表中的参数必须有名称,并且函数头末尾没有分号。 函数体是函数实现的功能所在,由一对大括号“{}”内的一组语句组成。 3.5.2 为函数设置参数 函数可以没有参数,也可以有多个参数,在设计函数的时候,对于参数应该注意下面几方面的问题。 (1)参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数则用void填充。 (2)参数命名要恰当,顺序要合理。 (3)参数的顺序要遵循程序员的习惯。一般地,应将目的参数放在前面,源参数放在后面。 (4)如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。 3.5.3 为函数参数设置默认值 在调用函数时,需要提供与函数原型相同的参数,即参数数量相同、参数类型兼容。 如果函数原型中包含3个参数,而调用函数时,只提供2个实际参数,则程序是不会通过编译的。 但是,如果在函数原型中为参数提供了默认值,情况就不同了。 3.5.4 为函数设置动态参数 C++允许定义形参个数和类型不确定的函数。 对于可变参数的函数,需要进行特殊的处理。 首先需要引用“cstdarg”头文件,然后利用va_list类型和va_start、va_arg、va_end等3个宏读取传递到函数中的参数值。 3.5.5 定义内联函数 在声明函数时,如果使用inline关键字,该函数就会成为内联函数。 当程序调用内联函数时,编译器并不会创建真实的函数,而是将函数的代码复制到被调用函数的地方。 这样,程序的跳转就不存在了。 3.5.6 定义和使用重载函数 函数重载即多个函数具有相同的名称,但函数的参数不同。 在调用函数时,编译器会根据参数的 个数、参数的类型区分调用哪个函数。 在定义重载函数时,需要注意,如果两个函数的函数名称、参数个数、参数类型相同,函数的返回值类型不同,编译时会出现错误,即函数重载不以函数的返回值类型区分。 此外,函数重载不以参数中的关键字区分。 3.5.7 应用函数模板定义通用函数 在计算两个数相加时,无论是两个整数相加还是两个实数相加,只需要调用一个函数即可实现。 但是,它需要用户定义两个同名的函数。 利用函数模板,用户可以设计一个通用的函数,实现两个整数或两个实数的相加。 3.5.8 应用函数指针调用不同的函数 在C++中可以声明一个函数指针,使其指向某个函数,通过该指针可以调用指向的函数。 3.5.9 函数的递归调用 在函数体中直接或间接调用函数本身,称之为函数的递归调用。 递归分为直接递归和间接递归,直接递归是函数直接调用其本身,间接递归是函数调用另一个函数,而被调用函数又调用了第1个函数。 使用函数递归能够简化复杂的数学运算。 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址:

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档