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;
}
C++ 值类型和引用类型传递示例的更多相关文章
- c#基础语言编程-按值类型和引用类型传递参数
引言 在介绍传递参数介绍前,请明白参数类型和传递方式是不同的.传递方式分为按值类型和引用类型传递参数.参数类型有值类型和引用类型,这个和C++是不同的.这里的传递方式对应c++中的深复制和浅复制. 两 ...
- .net中值类型、引用类型理解的c#代码示例
下面是以前在公司的时候给别人讲解值类型.引用类型时创建的c#代码示例,从实际使用时的角度出发,对于初学者还是很有帮助的.这里并没有深入讲解值类型包含引用类型成员时(如struct)在内存中的存放情况等 ...
- .NET面试题解析(01)-值类型与引用类型
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 常见面试题目: 1. 值类型和引用类型的区别? 2. 结构和类的区别? 3. delegate是引用类型还 ...
- Emit学习(2) - IL - 值类型和引用类型(补)
上周末回家去享受生活了, 工作是为了更好的生活嘛, 所以我把生活, 工作分的比较开. 这几天不是很忙, 在学习工作技能的同时, 发点博文, 也算是做一个学习笔记 上篇中, 贴出的地址里面那位哥, 也有 ...
- C#学习笔记(三):值类型、引用类型及参数传递
值类型和引用类型简介 C#中存在两种数据类型,分别是值类型与引用类型,下面我们来看看这两种类型的区别. 值类型主要包括: 简单类型(如int.float.char等,注意string不是值类型): 枚 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- 20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)
1:我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来类这个概念. 类就是个模子,确定了对象应该具有的属性和方法. 对象是根据类创建出来的. 2:类:语法 [public] class ...
- .NET基础知识(01)-值类型与引用类型
常见面试题目: 1. 值类型和引用类型的区别? 2. 结构和类的区别? 3. delegate是引用类型还是值类型?enum.int[]和string呢? 4. 堆和栈的区别? 5. 什么情况下会在堆 ...
- .net面试--值类型和引用类型
注:下面的示意图主要是为了辅助理解,不代表内存真实情况. Introduction 类型基础是C#的基础概念,了解类型基础及背后的工作原理更有助于我们在编码的时候明白数据在内存中的分配与传递.C#提供 ...
随机推荐
- SQLite 链接大全
http://www.cnblogs.com/stephen-liu74/archive/2012/01/22/2328757.html
- K8S API 调用
不好意,本人比较懒,OneNote 复制粘贴的时候就是自动变成图片了.请各位看官多多见谅. 遗留问题: 目前pod仅支持修改 * and(),so...
- Java进阶篇(五)——Java的I/O技术
程序中,为了永久的保存创建的数据,需要将其保存在磁盘文件中,以便在其它程序中使用它们.Java的I/O技术可以将数据保存到文本文件.二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求. 本篇 ...
- Azure Powershell使用已有特殊化非托管磁盘创建ARM虚拟机
生成已有特殊化非托管磁盘的方法主要有如下两种: 1.使用StorageExplorer存储管理工具,复制特殊化磁盘到一个新的容器下 2.New Portal中删除虚拟机,默认vhd文件会保留在存储账号 ...
- 禁止img图片拖动在新窗口打开
JS function imgdragstart(){return false;} for(i in document.images)document.images[i].ondragstart=im ...
- python字符串问题
相关知识点: 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unico ...
- 文件A包含文件B,找出A不包含B的那部分
文件A: a f b e c d 文件B: b c a 目的:A包含B,找出A中有但B中没有的部分 代码: 首先利用dos2unix命令将windows文件转换为unix文件 dos2unix a.t ...
- 【ASP.NET Core】MVC中自定义视图的查找位置
.NET Core 的内容处处可见,刷爆全球各大社区,所以,老周相信各位大伙伴已经看得不少了,故而,老周不考虑一个个知识点地去写,那样会成为年度最大的屁话,何况官方文档也很详尽.老周主要扯一下大伙伴们 ...
- eclipse修改默认workspace
1.进入 Window > Preferences > General > Startup and Shutdown 选中 Prompt for workspace on start ...
- JavaScript函数调用模式
1.方法调用模式: var myObj = { value : 0; increment:function(inc){ this.value += typeof inc === 'number' ? ...