C++函数调用方式(实参形参)

值传递方式:

1、普通调用,形参与实参为同样的类型

fun(int i)()

fun(Student stud)

()

main()

{  

fun(1);

Student s1;  

fun1(s1);

}

在函数中可以修改形参的值,但不能改变其对应的实参的值(形参的值变化无法传送到实参) 原因:在函数调用时将建立一个新的对象,是实参对象的拷贝,实参与形参分别占有不同的存储空间,无论形参是否修改都不会改变实参的值。 这种形式的虚实结合,会产生实参的拷贝。当传递的对象较大时,时间开销和空间开销都比较大。

2、使用指针作为函数参数

fun(int * i)

{}

fun(Student * stud)

{}

main()

{  

int i = 1;  

fun(&i);  

Student s1;  

fun1(&s1);

}

其实质也是值传递方式,只是传递的值是一个地址,实参将地址传递给形参,虚实结合后,实参与形参指向同样的地址。 其操作的都是同一个对象。 虚实结合时,也会产生实参的拷贝,为形参分配内存,用来存放指针值(即地址)

2、引用传递方式

1、用引用作为函数参数

fun(int& i){}

fun(Student& stud){}

main()

{

 int i = 1;  

fun(i);  

Student s1;

 fun1(s1);

}

不会为形参分配存储空间(常称为建立实参的一个拷贝),而是把实参的地址传递给形参(引用名),引用名也指向实参变量

你可能感兴趣的:(C++)