首页 > 编程语言 >开心档之C++ 引用

开心档之C++ 引用

时间:2023-04-27 15:02:07浏览次数:46  
标签:开心 变量 初始化 int double C++ 引用

C++ 引用

引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。

C++ 引用 vs 指针

引用很容易与指针混淆,它们之间有三个主要的不同:

  • 不存在空引用。引用必须连接到一块合法的内存。
  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  • 引用必须在创建时被初始化。指针可以在任何时间被初始化。

C++ 中创建引用

试想变量名称是变量附属在内存位置中的标签,您可以把引用当成是变量附属在内存位置中的第二个标签。因此,您可以通过原始变量名称或引用来访问变量的内容。例如:


int i = 17;

我们可以为 i 声明引用变量,如下所示:


int&  r = i;
double& s = d;

在这些声明中,& 读作引用。因此,第一个声明可以读作 "r 是一个初始化为 i 的整型引用",第二个声明可以读作 "s 是一个初始化为 d 的 double 型引用"。下面的实例使用了 int 和 double 引用:

实例

#include <iostream>
 
using namespace std;
 
int main ()
{
   // 声明简单的变量
   int    i;
   double d;
 
   // 声明引用变量
   int&    r = i;
   double& s = d;
   
   i = 5;
   cout << "Value of i : " << i << endl;
   cout << "Value of i reference : " << r  << endl;
 
   d = 11.7;
   cout << "Value of d : " << d << endl;
   cout << "Value of d reference : " << s  << endl;
   
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:


Value of i : 5
Value of i reference : 5
Value of d : 11.7
Value of d reference : 11.7

引用通常用于函数参数列表和函数返回值。下面列出了 C++ 程序员必须清楚的两个与 C++ 引用相关的重要概念:

概念描述
把引用作为参数 C++ 支持把引用作为参数传给函数,这比传一般的参数更安全。
把引用作为返回值 可以从 C++ 函数中返回引用,就像返回其他数据类型一样。

标签:开心,变量,初始化,int,double,C++,引用
From: https://www.cnblogs.com/gddg/p/17358911.html

相关文章

  • 开心档之C++ STL 教程
    C++STL教程在前面的章节中,我们已经学习了C++模板的概念。C++STL(标准模板库)是一套功能强大的C++模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。C++标准模板库的核心包括以下三个组件:组件描述容......
  • UNRAID6.11.1开心版下载及使用说明(集成中文插件)
    众所周知,所谓开心版就是已经解除限制功能,可正常开心使用。申明:此版本用于个人测试研究使用,如用于生产环境请购买官方正版,支持正版。部份资源转载于网络,请自行测试研究,下载测试后自行删除,如因软件版权及功能引起的任何问题自用户自行承担。该版本集成了常用插件,默认简体中文界面,......
  • c++打卡第十七天
    一、问题描述二、设计思路①、对于每个小孩得所得到的糖果数我们可以定义一个数组存储它们。②、需要进行循环结构,同时循环停止的条件为10个小孩得糖果数相同。③、小孩所得得糖果为奇数时需要向老师要一块后才再次分一半给后一个小朋友,这时候我们需要选择结构来实现。④、我们......
  • C++ linux epoll并发服务器模型初探
    socket通讯流程图最简单的可以通讯的C++服务器端代码:#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>#defineSERV_PORT8000intmain(void){intlfd......
  • 用C++编写一个简单的发布者和订阅者
    摘要:节点(Node)是通过ROS图进行通信的可执行进程。本文分享自华为云社区《编写一个简单的发布者和订阅者》,作者:MAVER1CK。@[toc]参考官方文档:Writingasimplepublisherandsubscriber(C++)背景节点(Node)是通过ROS图进行通信的可执行进程。在本教程中,节点将通过话题(To......
  • 基于C++的AI贪吃蛇
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]用C++做了个有AI功能的贪吃蛇小游戏,希望大家enjoyit.总体概况开发环境:VIsualStudio2017开发语言:C++和少许WindowsAPI运行环境:Windows1001初始化工作-游戏设置游戏设置和相关初始化放在了一个类里面,并进行了静态声明。主要设......
  • 【C++】类与对象(上)
    系列文章之前的文章中讲解了,什么是类、类的实例化,以及封装的意义,若仍有不理解的部分可以移步上一篇文章  【C++】类与对象(引入)目录系列文章1.默认成员函数2.构造函数2.1定义2.2特性2.2.1重载构造函数2.2.2与缺省参数混合使用2.2.3默认构造函数3.析构函数3.1定义3.2特性4.拷贝构造......
  • 强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么?
    典型回答不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和对垃圾收集的影响。所谓强引用(“Strong”Reference),就是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。对于一个普通的对象,如果没有其他的引用关系,只......
  • c++输出格式控制
    c++输出格式控制 一.控制符需要<iomanip>头文件常用:1.保留几位有效数字:setpricision(),括号里是保留的位数2.保留几位小数:setiosflags(ios::fixed)<<setpricision(),括号里是保留的位数(注意前面半句会影响此后所有setpricision()的用法,都变成保留小数位数,不只是这......
  • 【C++】类与对象(引入)
    目录前言类的引入类的定义封装与访问限定符封装访问限定符类的实例化类的大小this指针特性前言......