C++入门经典 笔记(第五章)调用函数
2015-07-25 18:48
423 查看
函数是程序的一部分,可对数据执行操作并返回一个值,每个C++程序至少有一个函数:程序运行时自动调用的main()。这个函数可包含调用其他函数的语句,而这些函数中也可能调用其他函数。
在编写函数的代码前,必须声明它。函数声明将函数的名称、函数返回类型和函数输入参数的类型告诉编译器。函数声明也叫原型,不包含任何代码,是单条语句,以分号结尾。参数列表列出了所有参数及其类型,并用逗号将他们分开。如: int findArea(int length, int width);函数可返回任何C++数据类型,如果函数不返回值,就应该将返回类型声明为void。
局部变量:在函数内创建的变量称为局部变量,因为它只存在于函数中,当函数返回后,其所有局部变量都不能供程序使用。局部变量的创建方式与其他变量相同,函数收到的参数也被视为局部变量。
全局变量:在函数(包括函数main())外面定义的C++变量,这样的变量称为全局变量。它在程序的任何地方都可用。注意:在编码的过程中应该多用局部变量,少用全局变量,因为它们会导致错误难以查找。
函数的返回值,在同一个函数中,可包含多条return语句。
默认函数参数,如果函数有多个参数,将根据参数的顺序指定默认值。可给任何参数指定默认值,但有一项需注意:如果某个参数没有默认值,那么它前面的任何参数都不能有默认值。
函数重载,返回参数类型相同,函数名相同,输入参数不同(参数的类型不同或参数数量不同都可),这样的函数称为函数重载。如:int store(int ,int);和int store(long, long);和int store(long);函数重载也被称为函数多态。
内联函数,如果函数包含的语句很少,就可以通过避免跳转来提高效率,在这种情况下,通过避免函数调用,程序的运行速度将更快。在声明C++函数时,如果使用了关键字inline,编译器将不会创建该函数,而将代码直接复制到调用它的地方,就像在调用它的地方直接输入了函数的语句一样。 如:inline int double(int);关键字inline提示编译器,你希望将该函数嵌入在调用它的地方。
注意:
在函数内部对参数进行修改时,不会影响到调用它的函数。因为,在默认情况下,参数是按值传递的,这意味着函数接受的参数实际上是原始值的备份,即使变量名相同也一样。
int findArea(int width,int length =1);
int findArea(int size);这是同一个函数的两个不同重载版本的声明,声明将能通过编译,但是如果使用一个参数调用了findArea(),就将出现编译错误,指出无法确定应该调用findArea(int,int)还是findArea(int)。
在编写函数的代码前,必须声明它。函数声明将函数的名称、函数返回类型和函数输入参数的类型告诉编译器。函数声明也叫原型,不包含任何代码,是单条语句,以分号结尾。参数列表列出了所有参数及其类型,并用逗号将他们分开。如: int findArea(int length, int width);函数可返回任何C++数据类型,如果函数不返回值,就应该将返回类型声明为void。
局部变量:在函数内创建的变量称为局部变量,因为它只存在于函数中,当函数返回后,其所有局部变量都不能供程序使用。局部变量的创建方式与其他变量相同,函数收到的参数也被视为局部变量。
全局变量:在函数(包括函数main())外面定义的C++变量,这样的变量称为全局变量。它在程序的任何地方都可用。注意:在编码的过程中应该多用局部变量,少用全局变量,因为它们会导致错误难以查找。
函数的返回值,在同一个函数中,可包含多条return语句。
默认函数参数,如果函数有多个参数,将根据参数的顺序指定默认值。可给任何参数指定默认值,但有一项需注意:如果某个参数没有默认值,那么它前面的任何参数都不能有默认值。
函数重载,返回参数类型相同,函数名相同,输入参数不同(参数的类型不同或参数数量不同都可),这样的函数称为函数重载。如:int store(int ,int);和int store(long, long);和int store(long);函数重载也被称为函数多态。
内联函数,如果函数包含的语句很少,就可以通过避免跳转来提高效率,在这种情况下,通过避免函数调用,程序的运行速度将更快。在声明C++函数时,如果使用了关键字inline,编译器将不会创建该函数,而将代码直接复制到调用它的地方,就像在调用它的地方直接输入了函数的语句一样。 如:inline int double(int);关键字inline提示编译器,你希望将该函数嵌入在调用它的地方。
注意:
在函数内部对参数进行修改时,不会影响到调用它的函数。因为,在默认情况下,参数是按值传递的,这意味着函数接受的参数实际上是原始值的备份,即使变量名相同也一样。
int findArea(int width,int length =1);
int findArea(int size);这是同一个函数的两个不同重载版本的声明,声明将能通过编译,但是如果使用一个参数调用了findArea(),就将出现编译错误,指出无法确定应该调用findArea(int,int)还是findArea(int)。
相关文章推荐
- (C++ STL)list的实现
- 【读书笔记】深度探索C++对象模型(更新中
- C/C++求职宝典21个重点笔记(常考笔试面试点)
- c++ primer 学习笔记-第一章
- C++ 继承与接口 知识点 小结(一)
- c++builder 代码输入助手
- C语言,变量与内存
- POJ1988基本的并查集
- C++入门经典 笔记(第四章)使用表达式、语句和运算符
- c语言中阶乘的精确值
- C语言结构体(struct)常见使用方法 blog.csdn.net/huqinwei987/article/details/23625823
- C++ 深入理解 虚继承、多重继承和直接继承
- C语言,数据类型
- (C++)String的用法
- getcher getch getched用法和缓冲区的概念
- ios入门之c语言篇——基本函数——3——判断日期是一年的第几天
- ios入门之c语言篇——基本函数——2——判断闰年
- ios入门之c语言篇——基本函数——1——随机数生成
- c++数组声明但不初始化,系统如何赋值
- C++栈的顺序存储和链式存储的实现