6.2参数传递
调用函数时会重新创建它的形参,并用实参进行初始化
伪代码:
void func(int x){
…
}
func(5) 调用func并传入实参5,这个过程等同于 形参 int x = 5
当实参的值拷贝给形参时,形参和实参是两个独立的对象,我们说这样的实参被值传递也可以说是函数被传值调用
形参的类型决定了形参和实参的交互方式(形参是什么类型,传入的实参应该是什么类型)
#include<string>
#include <iostream>
using namespace std;
void func(string x) {
cout << x << endl;
}
int main()
{
func(3.14);//这里会报错
system("pause");
return 0;
}
#include <iostream>
using namespace std;
void func(int x) { //如果是int类型
cout << x << endl;
}
int main()
{
double a = 3.14;
func(3.14);//结果就会将实参double类型的3.14强转为int类型 输出结果为3
system("pause");
return 0;
}
当形参是引用类型时,那么它所对应的实参被引用传递,或者说是函数被传引用调用
引用形参是它对应实参的别名
#include <iostream>
using namespace std;
void func(int &x) { //还是上面的函数此时是引用类型的形参
cout << x << endl;
}
int main()
{
double a = 3.14;
func(a);//这里会报错因为,此时的实参a是double类型,引用类型的形参是他对应实参的别名,但是函数形参却是int类型
system("pause");
return 0;
}