首页 > 编程语言 >[C++引用] 保定丽丽带你学C++

[C++引用] 保定丽丽带你学C++

时间:2023-03-20 13:00:54浏览次数:46  
标签:10 return cout 丽丽 C++ 保定 int 引用 ref

引用是C++内一个比较有用的方法,大家在丽丽的带领下好好学习。

[C++引用] 保定丽丽带你学C++_ios

一. 引用的基本使用

C++引用的作用: 给变量起别名

语法:​数据类型 &名字 = 原名​

示例:

#include<iostream>
using namespace std;
int main() {

int a = 100;
int& b = a;

cout << "a = " << a << endl;
cout << "b = " << b << endl;

b = 10;

cout << "a = " << a << endl;
cout << "b = " << b << endl;

system("pause");

return 0;
}

[C++引用] 保定丽丽带你学C++_局部变量_02

[C++引用] 保定丽丽带你学C++_c++引用_03

二. 引用注意事项

  • 引用必须初始化
  • 引用在初始化后,不可以改变

示例:

#include<iostream>
using namespace std;
int main() {

int a = 10;
int b = 20;
//int &c; //错误,引用必须初始化
int& c = a; //一旦初始化后,就不可以更改
c = b; //这是赋值操作,不是更改引用

cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;

system("pause");

return 0;
}

[C++引用] 保定丽丽带你学C++_引用_04

三.引用做函数参数

作用:函数传参时,可以利用引用的技术让形参修饰实参

优点:可以简化指针修改实参

示例:

//1. 值传递
void mySwap01(int a, int b) {
int temp = a;
a = b;
b = temp;
}

//2. 地址传递
void mySwap02(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}

//3. 引用传递
void mySwap03(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}

int main() {

int a = 10;
int b = 20;

mySwap01(a, b);
cout << "a:" << a << " b:" << b << endl;

mySwap02(&a, &b);
cout << "a:" << a << " b:" << b << endl;

mySwap03(a, b);
cout << "a:" << a << " b:" << b << endl;

system("pause");

return 0;
}

[C++引用] 保定丽丽带你学C++_#include_05


总结:通过引用参数产生的效果同按地址传递是一样的。引用的语法更清楚简单

四. 引用做函数返回值

作用:引用是可以作为函数的返回值存在的

注意:不要返回局部变量引用

用法:函数调用作为左值

示例:

#include<iostream>
using namespace std;
//返回局部变量引用
int& test01() {
int a = 10; //局部变量
return a;
}

//返回静态变量引用
int& test02() {
static int a = 20;
return a;
}

int main() {

//不能返回局部变量的引用
int& ref = test01();
cout << "ref = " << ref << endl;
cout << "ref = " << ref << endl;

//如果函数做左值,那么必须返回引用
int& ref2 = test02();
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;

test02() = 1000;

cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;

system("pause");

return 0;
}

[C++引用] 保定丽丽带你学C++_局部变量_06

五. 引用的本质

本质:引用的本质在c++内部实现是一个指针常量.

讲解示例:

#include<iostream>
using namespace std;
//发现是引用,转换为 int* const ref = &a;
void func(int& ref) {
ref = 100; // ref是引用,转换为*ref = 100
}
int main() {
int a = 10;

//自动转换为 int* const ref = &a; 指针常量是指针指向不可改,也说明为什么引用不可更改
int& ref = a;
ref = 20; //内部发现ref是引用,自动帮我们转换为: *ref = 20;

cout << "a:" << a << endl;
cout << "ref:" << ref << endl;

func(a);
return 0;
}

[C++引用] 保定丽丽带你学C++_引用_07

结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了

六.常量引用

作用:常量引用主要用来修饰形参,防止误操作

在函数形参列表中,可以加const修饰形参,防止形参改变实参

示例:

#include<iostream>
using namespace std;
//引用使用的场景,通常用来修饰形参
void showValue(const int& v) {
//v += 10;
cout << v << endl;
}

int main() {

//int& ref = 10; 引用本身需要一个合法的内存空间,因此这行错误
//加入const就可以了,编译器优化代码,int temp = 10; const int& ref = temp;
const int& ref = 10;

//ref = 100; //加入const后不可以修改变量
cout << ref << endl;

//函数中利用常量引用防止误操作修改实参
int a = 10;
showValue(a);

system("pause");

return 0;
}

[C++引用] 保定丽丽带你学C++_局部变量_08

[C++引用] 保定丽丽带你学C++_局部变量_09

[C++引用] 保定丽丽带你学C++_局部变量_10

标签:10,return,cout,丽丽,C++,保定,int,引用,ref
From: https://blog.51cto.com/u_16007926/6132610

相关文章

  • C++重载
    返回值不能作为重载的依据intfun()const;intfun();常成员函数可以用于重载无法重载的情况voidfun(inta);voidfun(constinta);普通值传递和const传递无法......
  • C++ 读写ini文件
    #include<Windows.h>#include<string>classIniFile{public:IniFile(conststd::wstring&path):m_path(path){}std::wstringGetValue(conststd::wstring&......
  • C++ map用法总结(整理)
    C++map用法总结(整理)1,map简介map是STL的一个关联容器,它提供一对一的hash。第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(valu......
  • vscode中使用#include<bits/stdc++.h>报错,已解决.
    最近使用vscode写c++代码时,使用万能头文件#include<bits/stdc++.h>居然报错了。在网上查找资料时,看到一个大佬的评论,最终顺利解决。方案如下:将鼠标停留在错误波浪线处,点......
  • C/C++个人收支管理系统[2023-03-19]
    C/C++个人收支管理系统[2023-03-19]5、个人收支管理请用C/C++编写一系统,实现个人收支管理模拟,包括收入、支出、查询与统计等功能。软件应包括如下几个方面:(一)功能要求......
  • 【模型部署】在C++和Python中配置OpenVINO2022环境
    1.C++端配置1.1下载安装OpenVINOOpenVINO官网下载网址:https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html方式一:下载exe文件......
  • 【模型部署】在C++和Python中配置ONNXRuntime环境
    1.C++端配置官网下载链接:https://onnxruntime.ai/github下载地址:https://github.com/microsoft/onnxruntime/releases1.1GPU版本在GPU端使用OnnxRuntime进行推理时,需......
  • c++11新特性总结
    C++11新增加特性1.=default,delete=default如果我们没有定义构造函数,C++编译器会自动为我们创建一个默认构造函数。但是如果我们定义了一个构造函数,那么编译器就不会为......
  • C++ primer 第七章记录
    1:void可以指向任何类型的对象,但是不能直接操作所指向的对象*2:常量指针可以指向非常量对象doubledval=3.14;constdouble*cptr=&dval;合法,constdouble*只......
  • what areas are C++ typically used?
    我whatareasareC++typicallyused?ChatGPTAsanAIlanguagemodel,IcansaythatC++istypicallyusedinthefollowingareas:OperatingSystems:C++is......