C++值传递、引用传递、指针变量传递参数的比较

// test1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "iostream"
using namespace std;

/**
 *1.值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值,
 *从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,
 *不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。
 */
void Add(int a)
{
	a = a+3;
}

/**
 *2.如果函数按引用方式传递,在调用函数中修改了参数的值,其改变是影响到实参
 */
void Add2(int &a)
{
	a= a+3;
}

/**
 *3.使用指针变量传递参数与引用传递效果一样,当对形参的指向操作时,就相当于对实参本身进行的操作
 */

void Add3(int *a)
{
	*a +=3;
}


void main()
{
	int a = 5;
	Add(a);            //值传递不改变实参的值,所以a仍然是5
	cout<<"测试值传递结果:"<<a<<endl;

	int &b= a;
	Add2(b);		  //引用传递会影响实参,所以结果是8
	cout<<"测试值传递结果:"<<a<<endl;

	int *c = &a;
	Add3(c);		  //指针传递传递会影响实参,所以结果是11,注释Add2可得结果亦为8
	cout<<"测试值传递结果:"<<a<<endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值