C++继承了C语言的全部语法,也包括函数的定义和使用方法。
调用其他函数的函数因为位高权重被尊称为主调函数,被其他函数调用的函数称为被调函数。
函数的返回值由return语句给出,return 表达式;
一个函数也可以不将任何值返回给主调函数,这时它的类型标识符为void,可以不写return语句,但也可以写一个不带表达式的return语句(return;)
函数的调用:一般在定义了一个函数之后就可以直接调用这个函数,但如果希望在定义一个函数前调用它,则需要在调用函数之前添加该函数的函数原型声明,不多说了看代码
#include<iostream> using namespace std; double power(double x,int n) { double val=1.0; while(n--) val*=x; return val; } int main() { cout<<"5 to the power 2 is"<<power(5,2)<<endl; //函数调用作为一个表达式出现在输出语句中 return 0; }
嵌套调用
函数允许嵌套调用,如果函数1调用了函数2,函数2再调用函数3,便形成了函数的嵌套调用
//这是求平方和程序的一部分 int fun2(int m){ return m*m; } int fun1(int x,inty){ return fun2(x)+fun2(y); }
递归调用
函数可以直接或间接的调用自身,称为递归调用
//直接调用 void fun1(){ ... fun1(); ... } //间接调用 void fun1(){ ... fun2(); ... } void fun2(){ ... fun1(); ... }
函数的参数传递
值传递:函数调用时传递的是实参的值,是单向的传递过程。形参值的改变对实参不起作用。
引用传递:引用是一种特殊类型的变量,可以被认为是令一个变量的别名。用引用作形参,在函数调用时发生的参数传递,称为引用传递。
//值传递 void swap(inta,intb){} //引用传递 void swap(int &a,int &b){}
内联函数:内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。直白一点一点表达的话就是用空间换时间,好吧,了解微机原理的孩子秒懂~
定义与普通函数的定义方式几乎一样,只需要使用关键字inline
inline 类型说明符 函数名(含类型说明的形参表)
{
语句序列
}
带默认形参值的函数
函数在定义时可以预先声明默认的形参值,说几点要注意的吧1有默认值的形参必须在形参列表的最后;2在相同的作用域内,不允许在同一个函数的多个声明中对同一个参数的默认值重复定义,即使值不同也不行,就像我们不能同时左手画方右手画圆一样。
函数重载
两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载,重载函数的形参必须不同:个数不同或者类型不同
运行栈和函数调用的执行
栈是一种容纳数据的容器其特点是~后进先出先进后出
函数先讨论到这里,欲知类与对象如何,且听下回分解~