zoukankan      html  css  js  c++  java
  • 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] 
    " , &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] 
    " , &a , &b) ;
    }
    
    void swap(int & a , int & b){
    	int temp = a ;
    	a = b ;
    	b = temp ;
    
    	printf("swap:[0x%x] , [0x%x] 
    " , &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 
     " , 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] 
    " , 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] 
    " , a , &a , b , &b  , &ptra , &ptrb ) ;
    
    	//按引用传递
    	 a = 3 ;
    	 b = 4 ;
    	swap(a , b) ;
    	printf("a = %d [0x%x] , b = %d[0x%x] 
    " , a , &a , b , &b) ;
    
    	system("pause");
    
    	return 0;
    }
    
  • 相关阅读:
    linux安装日志切割程序
    Linux下安装JDK
    深入理解Java注解类型(@Annotation)
    23种设计模式--代理模式-Proxy
    23种设计模式--建造者模式-Builder Pattern
    23种设计模式--工厂模式-Factory Pattern
    23种设计模式
    Java集合框架学习笔记
    MySQL入门笔记(一)
    二进制运算基础
  • 原文地址:https://www.cnblogs.com/a_bu/p/7366791.html
Copyright © 2011-2022 走看看