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#提供 ...
随机推荐
- Android-第二天
1.Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...
- Google免费GPU使用教程
今天突然看到一篇推文,里面讲解了如何薅资本主义羊毛,即如何免费使用Google免费提供的GPU使用权. 可以免费使用的方式就是通过Google Colab,全名Colaboratory.我们可以用它来 ...
- Mysql Index extends优化
Innodb通过自动把主键列添加到每个二级索引来扩展它们: CREATE TABLE t1 ( i1 , i2 , d DATE DEFAULT NULL, PRIMARY KEY (i1, i2), ...
- mysql查看表大小
mysql查看表大小 一:命令 show table status like 'table_name'\G; mysql> show table status like 'x'\G; . row ...
- MyCat 启蒙:分布式系统的数据库架构演变
文章首发于[博客园-陈树义],点击跳转到原文<MyCat 启蒙:分布式系统的数据库架构演变> 单数据库架构 一个项目在初期的时候,为了尽可能快地验证市场,其对业务系统的最大要求是快速实现. ...
- js禁止开发者工具
$(document).keydown(function() { return key(arguments[0]) }); function key(e) { //f12 var keynum; if ...
- java 基本数据类型与变量类型
Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. byte,short,char,int,long,float,double Java语言支持的变 ...
- tomcat调优(三)
标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 1.安全优化 降权启动 telnet管理端口保护 ajp连接端口保护 禁用管理端 关闭本地默认 ...
- Node.js--安装express以及创建第一个express项目(windows)
1.根据新版的express出现了安装器的概念,安装express需要两个步骤(命令行找到nodejs目录全局安装): (1)npm install -g express@4.15.0 (也可省略 ...
- 华硕笔记本电脑Win10改Win7设置U盘启动
华硕笔记本电脑Win10改Win7设置U盘启动 尝试开机按ESC选择前面没有UEFI项的USB启动: 1,在BIOS设置里advanced菜单,把 Lgeacy USB support选择为enabl ...