// 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;
}

 

 posted on 2017-08-15 18:31  仰光  阅读(455)  评论(0编辑  收藏  举报