C++参数传递(01)
*是取值运算符,对地址使用可以获得地址中储存的数值;对于指针a,*a表示取a中的值
&是地址运算符,对变量使用可以获得该变量的地址。 对于变量b,*b表示取b的地址
别名(引用):主要用于做函数的形式参数。
引用是复合类型,通过在变量前添加&符号来定义。不能定义引用类型的引用!!除了作为形参,定义引用时必须初始化!!如:
int ival= ;
int&ref = ival;
int&ref1; error 未关联
int&ref2 = ; error,必须关联到一个对象 ps:不能将引用再绑定到另一个对象!! const引用是指向const对象的引用,可以读取但不能修改const引用。
constint ival = ;
int i =;
constint &ref = ival;
constint &r = ; right!不同于普通引用!
constint &r2 = r+i; right!不同于普通引用!
int&ref2 = ival; error!普通引用! 非const引用只能绑定到与该引用同类型的对象。
doubledval = 3.14;
int&ri = dval;
上述代码会被编译器解释为:
doubledval = 3.14;
int temp= dval;
int&ri = temp;
所以改变ri不会修改dval,而是修改了temp。所以建议给ri加上const,即const int &ri=dval;
参数传递分为:值传递,指针传递,引用传递
#include "stdafx.h"#include <iostream>
using namespace std; //值传递
void swap1(int p,int q) //传过来的参数复制一份副本,所以造作对传过来的参数没有影响
{
int temp;
temp=p;
p=q;
q=temp;
} //很明显,交换失败 //指针传递,函数体内只有指针值的变化
void swap2(int *p,int *q) //把指针存的是地址,所以调用时要传对象的地址
{
int temp;
temp=*p; //把p(*指针是取指针指向地址的值)的值赋给temp
*p =*q; //把q的值赋给p
*q=temp; //再把temp的值赋给*q
} //交换成功,实际是对指针指向地址的值的操作,p和q的指针并没有改变 //指针传递,函数体内只有指针的变化
void swap3(int *p,int *q)
{
int *temp; //指针
temp=p; //把p的指针(指向的地址),赋给temp
p=q; //把q的指针复制给p
q=temp; //再把temp指针赋值给q
} //交换失败,虽然p=2,q=1.但是只是把p和q的指针值改变了,即p指向b,q指向a了,实际上a和b的值并没有改变 //引用传递,这时函数并没有对形参对象初始化,即没有指定形参对象是哪个对象的别名。
//在函数调用时,实参对象名传给形参对象名,形参对象名就成为实参对象名的别名。
//实参对象和形参对象代表同一个对象,所以改变形参对象的值就是改变实参对象的值。
//实际上,在虚实结合时是把实参对象的地址传给形参对象,使形参对象的地址取实参对象的地址,从而使形参对象和实参对象共享同一个单元。这就是地址传递方式。
//通过使用引用参数,一个函数可以修改另外一个函数内的变量。因为引用对象不是一个独立的对象,不单独占用内存单元,而对象指针要另外开辟内存单元(其内容是地址),所以传引用比传指针更好。
//注意:虽然系统向形参传递的是实参的地址而不是实参的值,但实参必须使用对象名。
void swap4(int &p,int &q) //引用传递时,对形参的操作等同于对实参的操作,即传递的不会是实参的副本,而就是实参
{
int temp;
temp=p;
p=q;
q=temp;
} int main()
{
int a=,b=;
swap1(a,b);
//swap2(&a,&b);
//swap3(&a,&b);
//swap4(a,b);
return ;
}
C++参数传递(01)的更多相关文章
- JQuery Mobile 页面参数传递
在单页模版中使用基于HTTP的方式通过POST和GET请求传递参数,而在多页模版中不需要与服务器进行通信,通常在多页模版中有以下三种方法来实现页面间的参数传递. 1.GET方式:在前一个页面生成参数并 ...
- JQuery Mobile 页面参数传递(转)
在单页模版中使用基于HTTP的方式通过POST和GET请求传递参数,而在多页模版中不需要与服务器进行通信,通常在多页模版中有以下三种方法来实现页面间的参数传递. 1.GET方式:在前一个页面生成参数并 ...
- 页面加载完成后,触发事件——trigger()
<button id="btn">点击我</button> <div id="test"></div> 如果页面 ...
- Spring-Data-Jpa环境配置与实际应用
上次我们讲述了<Spring-Data-Jpa概述与接口>,接下来我们再讲讲Spring-Data-Jpa环境配置与实际应用. Spring-Data 方法定义规范与使用配置 简单条件查询 ...
- 068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题——基本数据类型传值
068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题--基本数据类型传值 本文知识点:参数传递问题--基本数据类型传值 说明:因为时间紧张,本人写博 ...
- Java企业实训 - 01 - Java前奏
前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...
- shell 脚本之获取命令输出字符串以及函数参数传递
在ubuntu 14.04之后,所有的U盘挂载也分用户之分,最近很多操作也和U盘有关,所以就研究了一上午shell脚本函数以及字符串操作的方法. 字符串操作: 获取他的命令输出比较简单,打个简单的比方 ...
- [asp.net mvc 奇淫巧技] 01 - 封装上下文 - 在View中获取自定义的上下文
我们在asp.net 开发中已经封装了最强大的HttpContext,我们可以在HttpContext中可以获取到几乎任何想获取的东西,也可以在HttpContext写入需要返回客户端的信息.但是这些 ...
- 8.SpringMVC参数传递
页面参数传递到controller, 可被同名(与页面标签上的name名对应)的参数接收,用request设值,页面再取出来. 注意乱码解决办法: ①如果是get提交,则在tomcat的server. ...
随机推荐
- python列表补充、循环
优先掌握部分 切片l=['a','b','c','d','e','f']print(l[1:5])print(l[1:5:2])print(l[2:5])print(l[-1])了解print(l[- ...
- Python爬虫1-----------placekitten 入门
常用的urllib库有三个类:request,parse,error,request主要完成对url的请求,如proxy,opener,urlopen,parse主要完成对html的解析,error负 ...
- Oracle单引号的用法-转义
在ORACLE中,单引号有两个作用: 1:字符串是由单引号引用 2:转义. 单引号的使用是就近配对.而在单引号充当转义角色时相对不好理解 1.从第二个单引号开始被视为转义符,如果第二个单引号后面还 ...
- 【个人笔记】《知了堂》MySQL三种关系:一对一,一对多,多对多。
一对一:比如一个学生对应一个身份证号.学生档案: 一对多:一个班可以有很多学生,但是一个学生只能在一个班: 多对多:一个班可以有很多学生,学生也可以有很多课程: 一对多关系处理: 我们以学生和班级之间 ...
- 【京东详情页】——原生js爬坑之放大镜
一.引言 在商城的详情页中,放大镜的功能是很常见的.这里京东详情页就要做一个仿放大镜的效果,预览如下: 二.实现原理 实际上,放大镜的实现是单纯用几个div,鼠标移入其中一个小图div,触发事件显示另 ...
- 微服务~Eureka实现的服务注册与发现及服务之间的调用
微服务里一个重要的概念就是服务注册与发现技术,当你有一个新的服务运行后,我们的服务中心可以感知你,然后把加添加到服务列表里,然后当你死掉后,会从服务中心把你移除,而你作为一个服务,对其它服务公开的只是 ...
- TCP/IP(一)之初识计算机网络
前言 在一段时间里,都很想知道一台电脑怎么跟另一台电脑通信的,我发送一个qq给女朋友,怎么准确的发送过去的,又是怎么接受消息的. 接下来一段时间给大家慢慢分享关于计算机网络的相关知识. 一.局域网.广 ...
- Https系列之三:让服务器同时支持http、https,基于spring boot
Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...
- Highway Networks Pytorch
导读 本文讨论了深层神经网络训练困难的原因以及如何使用Highway Networks去解决深层神经网络训练的困难,并且在pytorch上实现了Highway Networks. 一 .Highway ...
- 使用http -server 搭建本地简易文件服务器
安装 npm install http-server -g 使用 1. cd project . 2. hs [pwd] -o, 默认是当前路径 ./ 3. 其他选项 -p Port to use ( ...