c++—引用。。。

目录

      • 目录
      • 前言
      • 引用的概念
      • 交换a和b的值:
      • 引用作为函数的返回值
      • 常引用
      • 例子

前言

纯自学,看的mooc上郭老师的课,整理整理。。。不然全忘了。。

引用的概念

类型名&引用名=某变量名;

int&r=n;

r引用了n,r的类型是int&,r是引用变量。
某个变量的引用等价于这个变量,r和n是一回事。
注意
定义引用时一定将其 初始化成引用某个变量;
初始化后,他就一直引用该变量,不会再引用别的变量;
引用只能引用变量,不能引用常量和表达式;

double a=4,b=5;
double &r1=a;
double &r2=r1;
r2=10;
cout<<a<<endl;//输出10
r1=b; ///r1没有引用b,而是从一而终的引用a,这里只不过是对r1赋值; cout<<a<<endl; ///5

交换a和b的值:

指针间接取值

void swap(int*a,int*b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
int n1,n2;
swap(&n1,& n2);///传变量地址调用

传引用调用

int &swap(int &x,int &y)
{
int t=a;
int a=b;
int b=t;
}
swap(m,n);///m,n等价于x,y,于是x,y交换,就m,n交换;

引用作为函数的返回值

int n=4;
int &setvalue(){return n;}//函数返回值是引用,这个引用引用了全局变量n;
int main()
{setvalue()=40;//等价于对n赋值cout<<n;return 0;
}///输出40

常引用

不能通过常引用修改其引用的内容;

int n=10;
const int&r=n;
r=200;//错
n=300;//可以,引用的内容可以被修改,只不过不能通过常引用修改。。

例子

#include <iostream>
using namespace std;
class A
{
    public:int x;int getX() { return x; }    
};
void swap(A&a,A&b) ///自定义了一个类型AaA的对象。。。
{int  tmp = a.x;a.x = b.x;b.x = tmp;
}
int main()
{A a,b;a.x = 3;b.x = 5;swap(a,b);cout << a.getX() << "," << b.getX();return 0;
}

交换指针,有时在数组里用到。。。
不过可以用strcpy,挺麻烦。。

#include <iostream>
using namespace std;void swap(int*&a,int*&b)///交换两个指针指向的地址,引用的是个指针。。。
{int * tmp = a;a = b;b = tmp;
}
int main()
{int a = 3,b = 5;int * pa = & a;int * pb = & b;swap(pa,pb);cout << *pa << "," << * pb;return 0;
}

返回值是引用,引用了a[i],于是返回值是它。。
然后对它赋值

#include <iostream>
using namespace std;
int& getElement(int * a, int i)
{return a[i];
}
int main()
{int a[] = {1,2,3};getElement(a,1) = 10;cout << a[1] ;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器闰秒 linux,闰秒导致部分 Linux 服务器高 CPU 使用率

国际地球自转和参考坐标系统服务(IERS)在2012年6月30日午夜(北京时间7月1号7点59分59秒)增加一闰秒(即出现7&#xff1a;59&#xff1a;60)。由于Linux kernel 2.6.29之前版本存在bug&#xff0c;在进行闰秒调整时可能会引起系统时钟服务ntpd进程死锁。Debian Lenny、RHEL/Cent…

const

目录 目录定义常量定义常量指针定义常引用 定义常量 const int max22&#xff1b; const double p3.1415; const char* sch"zzuli"; 定义常量指针 1.不可通过常量指针修改其指向的内容 &#xff5b;常量指针指向的内容不能随意修改&#xff5d; int n,m; cons…

http header 设置编码_【译】http.client

本模块实现了HTTP和HTTPS协议的客户端功能。通常本模块不会被直接使用&#xff0c;而是被urllib.request调用&#xff0c;来处理HTTP和HTTPS相关的URL。备注&#xff1a;HTTPS只有在支持SSL(带有ssl模块)的Python编译器里面才是可用的。(一)模块提供的类class http.client.HTTP…

diskgenius linux 分区,DiskGenius怎么分区,DiskGenius分区教程

DiskGenius分区教程方法一&#xff1a;一、首先&#xff0c;打开DiskGenius软件并单击以选择要操作的硬盘驱动器。二、然后右键单击“快速分区”按钮并单击“确定”。方法2&#xff1a;三、选择要操作的硬盘&#xff0c;单击软件上方的硬盘按钮&#xff0c;单击下面列中的快速分…

new

动态内存分配 用new运算符实现动态内存分配 动态内存分配分配一个变量分配一个数组new运算符返回值类型释放动态分配出来的内存空间动态分配指针数组 分配一个变量 pnew t; t是任意类型名&#xff0c;p为类型为t*的指针。 动态分配出一片大小为sizeof(t)字节的内存空间&a…

linux系统ip占用,IP地址被占用的问题,折腾我好几天了 (已解决)

原因找到了&#xff0c;另外一台机器的网卡上面不知道怎么绑定了两个IP地址eth0 Link encap:Ethernet HWaddr 00:20:ED:1A:62:7Einet addr:192.168.0.104 Bcast:192.168.0.255 Mask:255.255.255.0inet6 addr: fe80::220:edff:fe1a:627e/64 Scope:LinkUP BROADCAST RUNN…

sql server management studio性能分析_如何分析一条SQL的性能

来自公众号&#xff1a;谭小谭这篇文章将给大家介绍如何使用 explain 来分析一条 sql 。网上其实已经有非常多的文章都很详细的介绍了 explain 的使用&#xff0c;这篇文章将实例和原理结合起来&#xff0c;尽量让你有更好的理解&#xff0c;相信我&#xff0c;认真看完你应该会…

malloc动态分配数组以及指针数组大小

对于二维数组&#xff1a;一般来说&#xff0c;当给两个数分别表示行列&#xff0c;但两个数的范围过大&#xff0c;就需要动态分配。 int i,j,m,n;scanf("%d%d",&m,&n);int **a;a(int**)malloc(sizeof(int*)*m);for(i0;i<m;i)a[i](int *)malloc(sizeof(i…

编译运行linux0.12,linux0.12 编译过程

感谢这篇文章的作者&#xff1a; http://www.cnblogs.com/strugglesometimes/p/4231359.html编译是个很蛋疼的事情&#xff0c;本想把linux0.12在bochs上跑起来然后就可以各模块的学习&#xff0c;没想各种问题。问题1&#xff1a;1 gas -c -o boot/head.o boot/head.s2 mak…

不用数组,解决众数问题(前提 :众数出现的次数必须大于n/2)

内存限制4mb 用数组不通过&#xff0c;怎么办&#xff1f; 众数出现的次数必须大于n/2 第一行输入一个整数n &#xff08;1<n<1E6) 接下来一行n个整数 mi &#xff08;1<MI<1E9) 表示第i种糖果的个数&#xff0c;整数之间用空格隔开 输出mi中出现次数最多的那…

高考python必考题目_假如高考考python编程,这些题目你会几个呢?

Python(发音&#xff1a;英[?pa?θ?n]&#xff0c;美[?pa?θɑ:n])&#xff0c;是一种面向对象、直译式电脑编程语言&#xff0c;也是一种功能强大的通用型语言&#xff0c;已经具有近二十年的发展历史&#xff0c;成熟且稳定。它包含了一组完善而且容易理解的标准库&…

编译linux tq2440,QT4.8.2在TQ2440开发板上的移植(一)--编译和安装

主机版本&#xff1a;Ubuntu 11.04交叉编译器版本&#xff1a;4.3.3移植的主要工作就是编译在ARM板上运行的qt库&#xff0c;并且把这些库做到根目录中。需要的文件tslib-1.4.tar.gz qt-everywhere-opensource-src-4.8.2.tar.gz具体步骤如下&#xff1a;1、首先编译安装触摸屏驱…

图书管理系统_目前图书管理系统存在的问题

作者&#xff1a;新风学术网(一) 不能准确直观地指明图书所在的空间位置目前所使用的管理系统在索书的过程中是读者先在图书馆查询系统上查询到所要借的图书并记录下这本书的索书号和馆藏地, 再根据索书号到书的馆藏地所在位置查找书。有些读者对索书号是怎么排架的并不了解, 也…

python怎么计算图像梯度_opencv python图像梯度实例详解

这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下一阶导数与Soble算子二阶导数与拉普拉斯算子图像边缘&#xff1a;Soble算子&#xff1a;二阶导数&#xff1a;拉…

vector简单应用

输出vector中元素&#xff0c;以及插入删除元素 #include<iostream> #include<vector> using namespace std; template<class T> void printvector(T s,T e)//输出vector元素 {for(; s!e; s)cout<<*s<<" ";cout<<endl; } int …

Linux ct获取本机ip,linux ip命令

ip 是个命令&#xff0c; ip 命令的功能很多&#xff01;基本上它整合了 ifconfig 与 route 这两个命令&#xff0c;不过ip 的功能更强大&#xff01;如果您有兴趣的话&#xff0c;请自行 vi /sbin/ifup 就知道整个 ifup 就是利用 ip这个命令来实现的。下面介绍一下使用方法[ro…

linux errno的作用域,关于比特科技c语言的学习博客(1)

写代码1创建工程2创建路径3创建源文件4写代码写c代码时.c文件是源文件.h是头文件写helloworld时return 0记得中间敲空格 main是主函数从main开始执行也是程序的入口有且仅有一个int是整型的意思main前的int表示main函数调用返回一个整型值void main已经过时#include 包含一个叫…

python o创建文件_Python 文件I/O

模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个 模块里能让你的代码更好用&#xff0c;更易懂。模块也是Python对象&#xff0c;具有随机的名字属性用来绑定或引用。简单地说&#xff0c;模块就是一个保存了Python代码的文件。模块能定义函数&#xff0c;类…

函数对象应用

计算几个数的n次方和 #include<iostream> #include<vector> #include<algorithm> #include<numeric> #include<functional> using namespace std; int sumsquares(int total, int value) {return totalvalue*value; }template<class T>//…