c++ 函数的参数传递方式有值,指针以及引用三种方式,具体的区别是前两种其实都是值传递,只不过指针是以指针地址值的形式传递的,值传递时,形参是实参的副本,即函数中对形参的修改不会影响到实参的实际值,可以这样理解,值和指针传递的参数,实参具有不变性。但是引用是可变的,即函数中对形参的修改实参会跟着改变,值和指针的方式是C语言继承过来的,但是引用为C++新的特性,综上所述,如果函数中的形参是一个大的对象时,如果用值传递,显然会浪费内存空间,因为值传递会copy一个实参的副本,而指针同样也会copy只不过copy的是地址,相对来说小一点,但是引用最合适,因为不参加其他的操作,唯一不足的是要分清特点,如果不想修改引用的值,则最好把形参声明为const,具有不变性。一下为例子。供参考
#include "stdafx.h" #include <iostream> using namespace std; void swap1(int a,int b);//值传递 void swap2(int *a,int *b);//指针传递 void swap3(int &a,int &b); int main(){ int x = 1,y=2; swap1(x,y); cout<<"x:"<<x<<"X的原来地址为:"<<&x<<endl; swap2(&x,&y); cout<<"x的地址值:"<<&x<<endl; swap3(x,y); cout<<"x的引用值:"<<x<<endl; system("pause"); return 0; } void swap1(int a,int b){ if(a !=0 && b!=0){ int swap; swap =a; a = b; b=swap; cout<<"a:"<<a<<endl; } } void swap2(int *a,int *b){ if(a!=0&&b!=0){ int *swap=a; a = b; b = swap; cout<<"a的值:"<<a<<endl; } } void swap3(int &a,int &b){ if(a!=0&&b!=0){ int &swap=a; a = b; b = swap; cout<<"a的引用值:"<<a<<endl; } }
运行后的值为:
a:2 x:1X的原来地址为:001BF33C a的值:001BF334 x的地址值:001BF33C a的引用值:2 x的引用值:2 请按任意键继续. . .
相关推荐
总结:在实际使用中,值传递一方面会占用内存空间,内置类型还好(int等),如果是类(class)类型,赋值可能会是很大一笔...而对于指针传递,则在涉及数组的情况下使用较多,因为指针本身会给代码增加复杂性,难维护性
C++ 与C#之间的指针参数传递,实现无限量数据的传递,轻松无压力,方便在C++里面获取或者从C#传递数据到C++的动态库调用内。
c++调用dll ,指针结构体参数传递,--改造了csdn 上的一个程序。
详细介绍了C++中通过指针和通过引用传递参数的区别
可在被调用函数中改变调用函数的参数对象的值,实现函数之间的信息传递。 (2) 使用对象指针实参仅将对象的地址值传给形参,而不进行副本的拷贝,这样可以提高运行效率,减少时空开销。 当形参是指向对象指针时,...
用图示深度剖析c++指针参数传递内存时的详细过程,打破你以往对函数指针参数传递的误解(编译器总是要为函数的每个参数制作临时副本)。
在C++中,通过多维数据的指针作为函数参数传递源程序
java及C++中传值传递、引用传递和指针方式的理解.docx
c++之指针作为函数参数传递的问题的pdf版本 博客:http://blog.csdn.net/fjb2080 欢迎访问!
主要介绍了C++中引用传递与指针传递的区别(面试常见),需要的朋友可以参考下
当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。 如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的copy而不是指针本身,原来的...
golang调用c++DLL返回值为char*参数为const char*,读取返回DLL返回值,传递char*型参数
指针的定义与运算 指针与数组的关系 字符串函数 指针与const限定符 传递指针参数 动态内存分配方法 函数指针
C++this指针常用概念,this指针的使用,this例子,this指针如何传递给类中函数
函数进行参数传递,是在栈空间里为形参分配空间,并将计算各个实参的表达式的值,...根据函数的参数传递的不同,函数调用可以分为函数的值传递调用(传值调用)、函数的指针传递调用(传址调用)和函数的引用传递调用。
主要介绍了c++传递函数指针和bind的示例,需要的朋友可以参考下
C/C++的函数中传递多维数组的各种方法,包括数组和指针的各种用法.
为什么 Java 只有值传递,但 C++ 既有值传递,又有引用传递呢?今天我们就来探讨下这个问题,有需要的朋友可以参考下