C++入门进阶之2: 函数
1. 函数在没有被调用时是静止的,此时的形参只是一个符号。 函数在被调用时才执行,也是在被调用时,才由主调函数将实参赋给形参。
2. 函数调用执行过程: 当程序被启动时,首先从外部存储器将代码加载到内存的代码区, 然后从入口地址(main函数的起始地址)开始执行。 程序在执行过程中,如果遇到调用其他函数,则先暂停当前函数的执行,保存下一条指令的地址作为返回地址,并保存现场, 然后转到子函数的入口地址,执行子函数。 当子函数执行完成后, 返回到主函数,恢复现场,从先前保存的指令地址开始继续执行。
3. 函数的参数传递: 指的就是形参和实参结合的过程, 有值调用和引用调用两种方式。
4. 值调用: 当发生函数调用时,给形参分配内存空间,并用实参来初始化形参,直接将实参的值传递给形参。 这个过程是参数值的单向传递过程, 此后形参的变化,不会影响到实参。
5. 引用调用: 引用是一种特殊类型的变量,可以被认为是另外一个变量的别名。 通过引用名与通过被引用的变量名访问变量的效果是一样的。
示例:
int i,j:
int &ri = i; //建立一个int 类型的引用,并将其初始化为变量i的一个别名
j = 10;
ri = j; //相当于i = j;
使用引用必须注意: a. 声明一个引用时,必须同时对它进行初始化,使它指向一个已经存在的对象。
b. 一旦一个引用被初始化后,就不能指向其他对象
使用引用作为形参, 在函数被调用时,形参会成为实参的一个别名,对形参的任何操作就是对实参的操作。
6. 内联函数: 不是在调用时发生控制转移, 而是在编译时,就将函数体嵌入到了每一个调用的地方。
inline void Func();
内联函数注意点: 内联函数必须是功能简单,规模较小而使用频繁的函数,不能出现循环和switch等语句
内联函数的定义必须在第一次使用之前
对内联函数不能使用异常接口声明
编译器并不保证一定将inline的标识函数作为内联函数, 还是要根据代码而定
7. 默认形参函数: 必须要保证默认的形参后面不能有非默认的形参。 函数调用时,实参初始化形参的顺序是从左到右。
8. 函数重载: 两个以上的函数,具有相同的函数名,但是形参的个数或者类型不一样,编译器会根据实参和形参的类型以及个数的最佳匹配,自动确定调用哪一个函数,这就是函数重载。
补充:软件开发 , C++ ,