IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++的引用类型的掌握 -> 正文阅读

[C++知识库]C++的引用类型的掌握

引用类型是C++新增加的一个类型,也是非常体现C++特点的一个类型,一直知道其是别名,但具体含义必须准确掌握,才能准确的应用,其注意点如下:

1、定义:引用是已定义的变量的别名(另一个名称)

2、用途:引用变量的主要用途是用作函数的形参

3、使用注意事项:必须在声明引用时进行初始化(引用更接近const指针,必须在创建时进行初始化,一旦与某个变量关联起来,就将一直效忠于它)

这三点记住,就可以说掌握了引用的用法,哪一点不理解到位,使用过程中都报错。

比如第一点,定义,引用是已定义的变量的别名,其含义就是首先存在一个变量,这是前提条件,否则的话,编译就会报错,用一个例子展示一下:

  1 #include <iostream>
  2 #include <stdio.h>
  3 
  4 int getMax(int &a, int &b)
  5 { 
  6   int max;
  7   if(a > b) 
  8       max = a;
  9   else
 10       max = b;
 11   return max;
 12 }
 13 
 14 int main()
 15 { 
 16   using namespace std;
 17   int a1 = 2;
 18   int b1 = 3;
 19   int max = getMax(2, 3); 
 20   printf("max = %d\r\n", max);
 21   int max = getMax(a1, b1);
 22   printf("max = %d\r\n", max);
 23   return 0;
 24 }

是不是,看着上面的代码挺正常的,我一开始也是感觉这样的,直接隐形转化不就可以了,实际不是这样的,如果你这样想,编译就开始打你耳光了。

编译情况如下:

root@mkx:~/learn/quote# g++ quote.cpp -o quote
quote.cpp: In function ‘int main()’:
quote.cpp:19:24: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
   int max = getMax(2, 3); 
                        ^
quote.cpp:4:5: note:   initializing argument 1 of ‘int getMax(int&, int&)’
 int getMax(int &a, int &b)
     ^
root@mkx:~/learn/quote# 

报错提示了不能把rvale int直接给int&,其意思可以理解为,变量都不存在,何来引用呢

代码改成这样就可以了:

  1 #include <iostream>
  2 #include <stdio.h>
  3 
  4 int getMax(int &a, int &b)
  5 { 
  6   int max;
  7   if(a > b) 
  8       max = a;
  9   else
 10       max = b;
 11   return max;
 12 }
 13 
 14 int main()
 15 { 
 16   using namespace std;
 17   int a1 = 2;
 18   int b1 = 3;
 19   //int max = getMax(2, 3); 
 20   //printf("max = %d\r\n", max);
 21   int max = getMax(a1, b1);
 22   printf("max = %d\r\n", max);
 23   return 0;
 24 }

看编译效果:

root@mkx:~/learn/quote# g++ quote.cpp -o quote
root@mkx:~/learn/quote# ./quote 
max = 3
root@mkx:~/learn/quote# 

我就是注释了两行,就是这么简单。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:13:22  更:2022-03-10 22:16:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:26:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码