c++中函数参数传递(值传递、指针传递,引用传递)进一步认识
概念
实例
- 值传递:例子略过。
- 指针传递:
- void swap(int *a,int *b)
- {
- int temp;
- temp=*a;
- *a=*b;
- *b=temp;
- cout<<"a=" <<a<<" ,"<<"b="<<b<<endl;
- cout<<"*a=" <<*a<<" ,"<<"*b="<<*b<<endl;
- cout<<"&a=" <<&a<<" ,"<<"&b="<<&b<<endl;
- }
- int main(){
- int x=1;
- int y=2;
- cout<<"x=" <<x<<" ,"<<"y="<<y<<endl;
- cout<<"&x=" <<&x<<" ,"<<"&y="<<&y<<endl;
- swap(&x,&y);
- }
- swap(&x,&y);
如指针传递的概念上所述,传地址给形参。
- int change(char* name){
- cout<<"*******CHANGE--BEFORE******"<<endl;
- cout<<"name=" <<name<<endl;
- cout<<"*name=" <<&name<<endl;
- name="alter";
- cout<<"*******CHANGE--AFTER********"<<endl;
- cout<<"name=" <<name<<endl;
- cout<<"*name=" <<&name<<endl;
- return 1;
- }
- int main()
- {
- char *str = "this is a test";
- cout<<"******MAIN--BEFORE*****"<<endl;
- cout<<"str=" <<str<<endl;
- cout<<"*str=" <<&str<<endl;
- change(str);
- cout<<"*****MAIN--AFTER*****"<<endl;
- cout<<"str=" <<str<<endl;
- cout<<"*str=" <<&str<<endl;
- return 1;
- }
执行结果:(打印的输出的时候,有点错误,*str应该为 &str)
- name="alter";

- void my_malloc(void** p, int size)
- {
- *p = malloc(sizeof(int)*size);
- }
- int main()
- {
- int *a;
- my_malloc(&a , 10);
- return 1;
- }
)- void swapref(int &a,int &b)
- {
- cout << "******************before swapref:******************"<<endl;
- cout<<"a=" <<a<<" ,"<<"b="<<b<<endl;
- cout<<"&a=" <<&a<<" ,"<<"&b="<<&b<<endl;
- int temp;
- temp=a;
- a=b;
- b=temp;
- cout << "******************after swapref:******************"<<endl;
- cout<<"a=" <<a<<" ,"<<"b="<<b<<endl;
- cout<<"&a=" <<&a<<" ,"<<"&b="<<&b<<endl;
- }
- int main(){
- int x=1;
- int y=2;
- cout<<"******MAIN--BEFORE*****"<<endl;
- cout<<"x=" <<x<<" ,"<<"y="<<y<<endl;
- cout<<"&x=" <<&x<<" ,"<<"&y="<<&y<<endl;
- //swap(&x,&y);
- swapref(x, y);
- cout<<"*****MAIN--AFTER*****"<<endl;
- cout<<"x=" <<x<<" ,"<<"y="<<y<<endl;
- cout<<"&x=" <<&x<<" ,"<<"&y="<<&y<<endl;
- }
- swapref(x, y);
执行结果:
c++中函数参数传递(值传递、指针传递,引用传递)进一步认识的更多相关文章
- C语言中函数参数传递
C语言中函数参数传递的三种方式 (1)值传递,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值.(2)地址传递,就是把 ...
- Java 为值传递而不是引用传递
——reference Java is Pass by Value and Not Pass by Reference 其实这个问题是一个非常初级的问题,相关的概念初学者早已掌握,但是时间长了还是容易 ...
- 【Qt】信号和槽对值传递参数和引用传递参数的总结
在同一个线程中 当信号和槽都在同一个线程中时,值传递参数和引用传递参数有区别: 值传递会复制对象:(测试时,打印传递前后的地址不同) 引用传递不会复制对象:(测试时,打印传递前后的地址相同) 不在同一 ...
- java是值传递,还是引用传递?
原文地址:http://blog.csdn.net/zxmzfbdc/article/details/5401960 java到底是值传递,还是引用传递?以前国内的java开发者有过很多争论,由于& ...
- python关于入参中,传入的是指针还是引用
偶然看到别人的代码,发现有的会传入参数之后,做一次copy,试验一下,关于入参中,传入的是指针还是引用先说自己的结论:1.如果传入的是简单的类型,那么传入应该是引用的数值,2.假如传入的是df这种类型 ...
- C语言中函数参数传递的本质是值传递
数组名做函数参数进行传递时,实际上是是一份该指针的拷贝. 给形参赋予其他值,并不影响实参的值. 类似于: int *p = a; //a为数组名 p = b; //b为数组名 ...
- c语言 函数传输传递的三种方式(值、指针、引用)
本文摘自<彻底搞定c指针> 一.三道考题开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行……唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, in ...
- java中的参数传递——值传递、引用传递
参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递. 在 Java 应用程序中永远不会传递对象,而只传递对象引用.因此是按引用传递对象.Java 应用程序按引用 ...
- java中函数是值传递还是引用传递?
相信有些同学跟我一样,曾经对这个问题很疑惑.在网上也看了一些别人说的观点,评论不一.有说有值传递和引用传递两种,也有说只有值传递的,这里只说下个人见解 先看一个例子 public class Test ...
随机推荐
- ztree的异步加载
js中代码为: //参数设置: var setting = { async: { enable: true, url:"<%=path%>/role/getTreeData ...
- 微信小程序-学习总结(1)
微信小程序尺寸单位 rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx. 设备 rpx换算成px(屏幕宽度/750) ...
- Vue.js刷新当前页面
Vue.js的路由跳转很强大,类似ajax的局部刷新,路由跳转时候页面是不刷新的,刷新当前页面的功能不建议用,但是有的时候确实需要刷新当前页面来实现某些需求,这个时候,我们有三 种方法可以实现. 第一 ...
- MySQL复制(三):常见的复制任务
复制案例:包括横向扩展.热备 报表 企业需要挖掘有价值的报表信息,使用SLAVE,可以避免干扰到master的复制. 通过binlog获取某个时间范围的所有事件 $ mysqlbinlog --for ...
- UML初览(转)
原文:UML初览 本章使用一个简单的例子对UML中所使用的概念和视图进行初览.本章的目的是要将高层UML概念组织成一系列较小的视图和图表来可视化说明这些概念,说明如何用各种不同的概念来描述一个系统以及 ...
- SQL语句中的Having子句与where子句
一.介绍 聚合函数如SUM, COUNT, MAX, AVG等.这些函数和其它函数的根本区别就是它们一般作用在多条记录上.而通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于 ...
- [Idea]安装avtiviti插件以及 插件中文乱码
安装插件 打开IDEA,按ctrl+alt+S,打开Pluging 乱码问题 idea 安转activiti插件后,编辑流程图发现保存后中文乱码,并且idea的字符集(Settings—>Edi ...
- Ubuntu系统vi编辑器上下左右键变ABCD的解决方法(转)
首先卸载旧版本的vi编辑器: $sudo apt-get remove vim-common 然后安装新版vi即可: $sudo apt-get install vim Ubuntu自带有几种版本的v ...
- java ReentrantLock可重入锁的使用场景
摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些. 场景1:如果发现该操作已经在执行中则不再执行(有状态执行) a.用在定时任务时,如果任务执行时间可能超过下次 ...
- Django——admin组件
Django提供了基于web的管理工具. Django自动管理工具是django.contrib的一部分.你可以在项目的settings.py中的INSTALLED_APPS看到它: # Applic ...