首页 > 学院 > 开发设计 > 正文

值传递,指针传递,引用传递 的区别

2019-11-08 19:36:28
字体:
来源:转载
供稿:网友
值传递,指针传递,引用传递 的区别值传递:从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出形参为实参的拷贝,形参有单独的内存空间,当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递指针传递:指针传递向形参传递的为实参的地址,即形参为一个指向实参地址的指针,形参的值为实参的地址,而形参所在的地址并不是实参的地址对形参指向内容的修改即改变了实参的值引用传递:引用传递与指针传递不同是:引用传递中形参与实参的地址和参数值都是相同的,形参与实参只是名字不一样(形参相当于实参的别名)

实际上是一个对象

#include "stdafx.h"#include<iostream>using namespace std;void ValueTransfer(int a, int b){	int temp = a;	a = b;	b = temp;	cout << a << b << endl;	cout << "形参a与b的地址为/n";	cout << &a << ' ' << &b << endl;}void PointerTransfer(int *a, int *b){	int temp = *a;	*a = *b;	*b = temp;	cout << *a << *b << endl;	cout << "形参a与b的地址为/n";	cout << &a << ' ' << &b << endl;}void QuoteTransfer(int &a, int&b){	int temp = a;	a = b;	b = temp;	cout << a << b << endl;	cout << "形参a与b的地址为/n";	cout << &a << ' ' << &b << endl;}int main(){		int x = 3;	int y = 4;	//value transfer	cout << "值传递/n";	ValueTransfer(x, y);	cout << "实参x与y地址为/n";	cout << &x << ' ' << &y << endl;	cout << "传递后实参的值为:/n";	cout << x << y << endl << endl;		//PointerTransfer	cout << "指针传递/n";	PointerTransfer(&x, &y);	cout << "实参x与y地址为/n";	cout << &x << ' ' << &y << endl;	cout << "传递后实参的值为:/n";	cout << x << y << endl << endl;	//QuoteTransfer	cout << "引用传递/n";	QuoteTransfer(x, y);	cout << "实参x与y地址为/n";	cout << &x << ' ' << &y << endl;	cout << "传递后实参的值为:/n";	cout << x << y << endl << endl;	return 0;}结果:


上一篇:枚举

下一篇:jsoup 中文 api

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表