第9章__函数的使用.pptVIP

  • 2
  • 0
  • 约4.35千字
  • 约 27页
  • 2017-06-30 发布于江苏
  • 举报
第9章__函数的使用

第9章 函数的使用 我们在前面编写的程序实例中基本上只有一个main函数,没有其他函数。而在实际应用中,在比较大的程序中,通常包含比较复杂的逻辑和功能,这些功能包含若干子功能,子功能可能分解出更小的子功能。这些功能组合在一起,才能形成完整的程序。在C++语言中,上述的这些功能模块是由函数来实现的。所谓函数就是一段可以实现某种功能的程序;这段程序相对独立,具有自己的输入和输出,可以被重复调用,类似一个“黑匣子”。 第9章 函数的使用 9.1 函数的概念 在C++中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,这就是程序中的函数。我们可以将函数看作是程序员自己定义的操作。与内置操作符相同的是每个函数都会实现一系列的计算,然后形成一个计算结果。与操作符不同的是,函数有自己的函数名,而且函数的操作数是没有数量限制的。函数也是可以重载的,所以这意味着同样的函数名可以对应多个不同的函数,实现更加多元化的功能。 9.2 函数的声明 函数必须首先声明然后使用,正如变量必须首先声明然后使用一样。函数的声明也可以和函数的定义相分离,一个函数可以声明多次,但是只能定义一次。 当函数体的定义都是位于main函数之前时,可以顺利进行编译。但如果将函数定义部分放到函数调用语句之后时编译是否可以进行呢?严格来说,这样的编译过程应该不能通过。我们可以分析编译器的编译过程。编译器编译一个C++源文件时,采取从前向后的顺序进行。如果函数定义在前,那么编译器处理完函数定义部分后,自然了解了该函数的参数类型、个数和返回值等信息,那么后续的代码中遇到该函数的调用,编译器自然可以轻松处理;反之,编译器遇到一个函数的调用,但尚未编译该函数的定义,对该函数“一无所知”,那么编译器可能就会报错。 9.3 函数的定义 函数是由函数名以及一组操作数表示的。函数的操作数也可以称为是形参,在一对圆括号中声明的,形参与形参之间可以用逗号分割开。函数所执行的实现功能的运算是在一个称为函数体的块语句中定义的。每一个函数都有一个返回类型。我们在编写程序过程中会遇到无参函数和有参函数等类型,它们的定义相互之间是有一定的区别的。 9.3.1 不同函数类型的定义形式 无参函数很明显就是一种没有参数的函数,定义无参函数的一般形式如下: 函数返回值类型 函数名( ) { 定义部分 语句部分 } 9.3.2 函数的返回值 函数的返回值是通过函数中的return语句获得的,return语句将被调用函数中的一个确定值带回到主调函数之中去,而如果需要从被调用函数中带回一个函数值供主调函数使用,则在函数定义体中必须要包含return语句。一个函数中可以包含多个return语句,执行到哪个语句哪个起作用。return语句的后面可以是一个值也可以是可以得出值的表达式。例如: int get_bigger(int a,int b){ return(xy?x:y); } 9.3.3 函数的形参表 形参表是一系列用逗号分隔的参数类型和参数名组成的,如果两个参数具有相同的类型,其类型也必须重复进行声明。 int get_bigger(int a,int b,int c); //正确的用法 int get_bigger(int a,b,c); //错误的用法 函数的形参表可以是空的,没有形参的函数可以用空的形参表或者在形参表中写上void来表示。下面的两种表示是相同的: void print_now(); void print_now(void); 9.4 函数的参数传递 每次调用函数的时候,都会重新创建被调用函数所有的形参,这个时候主调函数的位置传递的实参就会重新初始化被调用函数所有对应的形参。注意如果形参是非引用类型,则复制实参的值,如果形参为引用类型则它只是实参的别名,并不会赋值实参的值。有关概念将会在下面的章节中讲解。 9.4.1 形式参数与实际参数 在有参函数中,在调用函数的时候,主调函数和被调用函数之间有数据传递关系。在定义函数的时候函数名后面括号中的变量名称为形式参数,也就是形参;在主调函数中调用一个函数的时候,函数名后面括号中的参数称为实际参数,也就是实参。 9.4.2 非引用形参 在C++中实参向形参的数据传递是值传递。在调用函数的时候,才会给形参分配存储单元,并将实参对应的值传递给形参,调用结束后形参单元才会被释放,而实参单元仍保留并维持原值。 9.4.3 引用形参 在上一节中我们学习了一种函数中的普通的参数传递情况,这种情况下改变形参是不能影响实参的值的。那么如何实现通过改变形参的值直接改变实参的值的效果呢?这就需要设置引用形参了。 使用引用形参应当注意以下几点: 1.使用const引用形参可以避免复制实参为局部副本 2.传递指向指针的引用 9.5

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档