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;
}
时间: 2025-01-02 15:55:57

C++ 值类型和引用类型传递示例的相关文章

c# 值类型与引用类型 值传递与引用传递

值类型与引用类型: 值类型 :1.值类型大小固定.存储在栈上.  2.不能继承,只能实现接口 3.派生自valuetype int double char float byte bool enum struct decimal 引用类型:1.在栈上存储了一个地址实际存储在堆中,大小不固定. 2.数组.类.接口.委托 string 数组 类 接口 委托 值传递与引用传递: 值类型按值传递.值类型按引用传递.引用类型按值传递.引用类型按引用传递. 值传递:默认传递都是值传递 ,把栈中内容拷贝一份引用

深层次探究值类型与引用类型,以及值传递引用传递

数据类型 类型的分类 所有的类型都可以划分为两类:值类型和引用类型.   值类型和引用类型的区别在于使用的内存位置不同:值类型数据存储在栈上,而引用类型数据存储在堆上.(至于栈和堆就不在这里多做解释)   ①.值类型     值类型在储存时直接包含值,即变量引用的位置就是值在内存中实际存储的位置,可看做是变量的值本身.因此,将第一个变量的值赋给第二     个值会在新变量的位置创建原始变量的值的一个内存副本.相同值类型的第二个变量不能引用和第一个变量相同的内存地址.所以更改第一     个变量的

20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)

1:我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来类这个概念. 类就是个模子,确定了对象应该具有的属性和方法. 对象是根据类创建出来的. 2:类:语法 [public] class 类名 { 字段; 属性; 方法; } 写好了一个类之后,我们需要创建这个类的对象,那么,我们管创建这个类的对象过程称之为类的实例化.使用关键字new 实例化类===创建类 this:表示当前这个类的对象. 类是不占内存的,而对象是占用内存的. 结构是面向过程的,类是面向对象的,之前没有面向对象的时候

C#学习笔记(三):值类型、引用类型及参数传递

值类型和引用类型简介 C#中存在两种数据类型,分别是值类型与引用类型,下面我们来看看这两种类型的区别. 值类型主要包括: 简单类型(如int.float.char等,注意string不是值类型): 枚举类型(enum): 结构体类型(struct): 引用类型主要包括: 类类型(如string): 数组类型(一维或多维数组): 接口类型(interface): 委托类型(delegate): 内存分布 值类型的实例大部分情况下会被存放在线程的堆栈上,由操作系统管理其在内存上的分配和释放. 引用类

Emit学习(2) - IL - 值类型和引用类型(补)

上周末回家去享受生活了, 工作是为了更好的生活嘛, 所以我把生活, 工作分的比较开. 这几天不是很忙, 在学习工作技能的同时, 发点博文, 也算是做一个学习笔记 上篇中, 贴出的地址里面那位哥, 也有一篇值类型和引用类型的文章 来源:http://www.cnblogs.com/yingql/archive/2009/03/23/1420026.html 我这个和他的那个稍有不同, 各位看官, 请! 一.示例 public class Person { public string Name {

[转] 值类型与引用类型(下)

本文将介绍以下内容: 类型的基本概念 值类型深入 引用类型深入 值类型与引用类型的比较及应用 [下载]:[类型示例代码] 1. 引言 值类型与引用类型的话题经过了两个回合([第八回:品味类型---值类型与引用类型(上)-内存有理]和[第九回:品味类型---值类型与引用类型(中)-规则无边])的讨论和切磋,我们就基本的理解层面来说已经差不多了,但是对这一部分的进一步把握和更深刻的理解还要继续和深化,因为我自己就在两篇发布之际,我就得到装配脑袋兄的不倦指导,之后又查阅了很多的资料发现类型在.NET或

[转] 值类型与引用类型(中)

本文将介绍以下内容: 类型的基本概念 值类型深入 引用类型深入 值类型与引用类型的比较及应用 1. 引言 上回[第八回:品味类型---值类型与引用类型(上)-内存有理]的发布,受到大家的不少关注,我们从内存的角度了解了值类型和引用类型的所以然,留下的任务当然是如何应用类型的不同特点在系统设计.性能优化等方面发挥其作用.因此,本回是对上回有力的补充,同时应朋友的希望,我们尽力从内存调试的角度来着眼一些设计的分析,这样就有助于对这一主题进行透彻和全面的理解,当然这也是下一回的重点. 从内存角度来讨论

iOS开发——swift篇&amp;经典语法(十二)值类型和引用类型

Swift中的值类型和引用类型 在Swift中,类型分为两类:第一种是值类型,该类型的每个实例持有数据的副本,并且该副本对于每个实例来说是独一无二的一份,比如结构体(struct).枚举(enum).元组(tuple)都是值类型.第二种是引用类型,该类型的实例共享数据唯一的一份副本(在native层面说的话,就是该类型的每个实例都指向内存中的同一个地址),比如类(class)就是引用类型.在这篇文章中,我们将深入探讨值类型和引用类型的使用价值,以及如何在某种场景下选择正确的类型. 它们有什么不同

Java值类型和引用类型

[定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值, 那么调用这个方法是传入的变量的值也将改变.值类型表示复制一个当前变量传给方法, 当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.通俗说法: 值类型就是现金,要用直接用:引用类型是存折,要用还得先去银行取现.----(摘自网上) [值类型] 也就是基本数据类型 基本数据类型常被称为四类八种 四类: 1,整型 2,浮点型 3,字符型4,逻辑型 八种: 1,整型3种 by