C++ 值类型和引用类型传递示例

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

#include "stdafx.h"


void swap_point(int * &a , int * &b){
	int temp = *a ;
	*a = *b;
	*b = temp  ;

	//销毁调用方指针
	//a = NULL ;
	//b = NULL ;

	printf("swap_point:[0x%x] , [0x%x] \r\n" , &a , &b) ;
}


void swap(int * a , int * b){
	int temp = *a ;
	*a = *b;
	*b = temp  ;

	//销毁调用方指针无效
	//a = NULL ;
	//b = NULL ;

	printf("swap:[0x%x] , [0x%x] \r\n" , &a , &b) ;
}

void swap(int & a , int & b){
	int temp = a ;
	a = b ;
	b = temp ;

	printf("swap:[0x%x] , [0x%x] \r\n" , &a , &b) ;
}


int _tmain(int argc, _TCHAR* argv[])
{
	/*int *ptr[3];

	for(int i = 0 ; i < 3 ; i++){
		ptr[i] = new int[5] ;
		for(int l = 0 ; l < 5 ; l++){
			ptr[i][l] = i * l ;
			printf("%d * %d = %d \r\n " , i , l , ptr[i][l] ) ;
		}
	}*/


	/*int (*ptr)[3] ;

	ptr = (int (*) [3])malloc(sizeof(int *) * 5) ;

	for(int i = 0 ; i < 5 ; i++){
		(*ptr)[0] = 1;
		(*ptr)[1] = 2;
		(*ptr)[2] = 3;
		ptr++ ;
	}


	//初使化数组
	char y[9][9] = {0};*/

	int a = 3 ;
	int b = 4 ;

	//指针通过值传递(无法修改调用方指针变量值),调用swap ,指针变量  ptra , ptrb 按【值】传递 , 其中  swap 中 int * a , int * b 分别copy   ptra , ptrb 指针变量
	int * ptra = &a ;
	int * ptrb = &b ;
	swap(ptra , ptrb) ;
	printf("a = %d [0x%x] , b = %d[0x%x] , ptra = [0x%x] , ptrb = [0x%x] \r\n" , a , &a , b , &b  , &ptra , &ptrb ) ;

	//指针通过引用传递(能修改调用方指针变量值),调用swap_point ,指针变量  ptra , ptrb 按【引用】传递 , 其中  swap 中 int * a , int * b 即 ptra , ptrb 指针变量
	swap_point(ptra , ptrb) ;
	printf("a = %d [0x%x] , b = %d[0x%x] , ptra = [0x%x] , ptrb = [0x%x] \r\n" , a , &a , b , &b  , &ptra , &ptrb ) ;

	//按引用传递
	 a = 3 ;
	 b = 4 ;
	swap(a , b) ;
	printf("a = %d [0x%x] , b = %d[0x%x] \r\n" , a , &a , b , &b) ;

	system("pause");

	return 0;
}

 

转载于:https://www.cnblogs.com/a_bu/p/7366791.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值