关于C++里面的函数中,按值传递与按引用传递的区别
2016-12-25 18:09
375 查看
在c++中,一般有两种传递方式:一种是引用按值传递,另一种是按引用传值,
其我们经常在java中写一些方法调用,当传递基本类型时,都是按指传递,在
传递对象时,都是按引用类型传递。
那么这两种的方式,我举个例子如下:
在控制台输出结果:
所以得出结论:
其我们经常在java中写一些方法调用,当传递基本类型时,都是按指传递,在
传递对象时,都是按引用类型传递。
那么这两种的方式,我举个例子如下:
#include <iostream> #include <cstring> using namespace std; struct Student { char name[20]; int age ; char sex; int grade; }; void changeMsg(Student); //按值传递, void changeMsg1(Student &); //引用传递; void changeMsg2(Student *stu);//指针传值; int main(int argc, char const *argv[]) { Student stu={"old name0",18,'f',3}; cout<<"改变前:"<<stu.name<<"\t"<<stu.age<<"\t"<<stu.sex<<"\t"<<stu.grade<<endl; changeMsg(stu); cout<<"changeMsg:"<<stu.name<<"\t"<<stu.age<<"\t"<<stu.sex<<"\t"<<stu.grade<<endl; changeMsg1(stu); cout<<"changeMsg1:"<<stu.name<<"\t"<<stu.age<<"\t"<<stu.sex<<"\t"<<stu.grade<<endl; changeMsg2(&stu); cout<<"changeMsg2:"<<stu.name<<"\t"<<stu.age<<"\t"<<stu.sex<<"\t"<<stu.grade<<endl; return 0; } void changeMsg(Student stu) { strcpy(stu.name,"new name"); stu.age=20; stu.sex='m'; stu.grade=4; } void changeMsg1(Student &stu) { strcpy(stu.name,"new name1"); stu.age=20; stu.sex='m'; stu.grade=4; } void changeMsg2(Student *stu) { strcpy(stu->name,"new name2"); stu->age=34; stu->sex='f'; stu->grade=3; }
在控制台输出结果:
改变前:old name0 18 f 3 changeMsg:old name0 18 f 3 changeMsg1:new name1 20 m 4 changeMsg2:new name2 34 f 3 [Finished in 0.4s]
所以得出结论:
得出结论:按值传递,不会改变当前调用函数里实参,按引用传值,会改变调用里面实参。 按值传递,这种方式,可以保护实参不被修改,效率比较低。 按引用传值或按引用传值,本质是传递一个指针指向地址值,实参会发生修改,效率更高。
相关文章推荐
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- C++之函数参数的值传递、指针传递以及引用传递的区别和联系
- C++点滴:向函数中传递指针和传递指针的引用的区别:
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- 关于C++函数思考2(C++函数返回引用和返回非引用的区别)
- 关于C++对函数传参与函数返回值进行引用传递的详解
- 再开一篇关于C++程序设计基核心之一:引用,指针,符号优先级,函数参数传递
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- C++中引用传递与指针传递区别
- 关于C++中函数返回引用的讨论
- C++中引用传递与指针传递区别
- 关于C++中函数返回引用的讨论
- 关于VB数组里面按值传递和按地址传递的区别
- C++关于参数为const引用类型的函数调用参数成员函数的一个问题
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- 问题:向函数中传递指针和传递指针的引用的区别
- 2010.8.16 关于函数参数是指针、还是引用的区别
- 关于C++中函数返回引用的讨论
- 【补足基础】C++中引用传递与指针传递区别【转】
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)