【C++课程学习】:C++入门(引用)

news2024/11/27 10:40:47

🎁个人主页:我们的五年

🔍系列专栏:C++课程学习

🎉欢迎大家点赞👍评论📝收藏⭐文章

 

 

目录

🍩1.引用的概念:

🍩2.引用和指针是两个概念:

🍩3.权限问题:

🍩4.引用的使用场景:

🌽1.做参数:

🌽2.做返回值:

🍩5.传值和传引用的区别:


 

🍩1.引用的概念:

引用是已经存在的取了一个别名,没有去新开辟新的空间,没有定义一个新的变量。它和引用的变量共用一块空间。

引用的结构:
类型&  引用变量名(对象名)=引用实体。

🍩2.引用和指针是两个概念:

引用是一个变量的别名,指针存储的是一个变量的地址。

1.引用不需要开辟新的空间(但是底层逻辑是需要的);指针要开辟新的空间存放地址(32位下是4个字节,64位下是8个字节)。

2.引用必须初始化;但是指针可以不初始化。

3.引用不能指向NULL;但是指针可以指向NULL。


4.引用+1,就是引用实体+1;指针+1是往后偏移一个类型的大小。

#include<iostream>
using namespace std;

int main()
{
	int a = 10;
	int& b = a;
	int* c = &a;
	//引用和指针+1的区别
	cout << "b="<<b << endl;
	cout << "b+1="<<b + 1 << endl;
	cout << "c="<<c << endl;
	cout << "c="<<c + 1 << endl;
}

 


5.sizeof的不同,sizeof引用是类型的大小;sizeof指针就是是指针的大小,32位平台是4个字节,64位平台是8个字节,所以一直用这么大的空间去存储变量的地址。

#include<iostream>
using namespace std;

int main()
{
	//引用和指针sizeof的区别
	cout << "sizeof(char&)=" << sizeof(char&) << endl;
	cout << "sizeof(int&)=" << sizeof(int&) << endl;
	cout << "64位平台:sizeof(int*)=" << sizeof(int*) << endl;
}

 

6.有多级指针,但是没有多级引用(现在目前知识水平是觉得没有必要)。

7.引用实体以后就不能再去引用其他实体。

8.引用比指针更安全。因为指针访问实体需要进行解引用操作,但是引用访问实体是编译器自己操作。

9.访问实体的方式不同。指针需要显示解引用,但是引用是编译器自己处理。

🍩3.权限问题:

权限只能平移或者缩小,不能放大。

const只有可读权限,没有const就是可读可写的权限。允许const到const(权限平移),允许int到const int(权限缩小)。

但是不能从const int到int(权限放大)。

#include<iostream>
using namespace std;

int main()
{
	const int a = 10;

	//权限平移
	const int& b = a;

	//权限放大,错误
	//int& c = a;

	//权限缩小
	int x = 10;
	const int& y = x;
}

🍩4.引用的使用场景:

🌽1.做参数:

做函数的参数,因为是实体的别名,所以直接可以改变实体。

作返回值的时候,一定要注意出了函数以后,变量还在。

#include<iostream>
using namespace std;

//做参数
void Add(int& a, int& b){
	a++;
	b++;
}

int main()
{
	int a = 1, b = 2;
	Add(a, b);
	cout << "a=" << a << endl;
	cout<< " b=" << b << endl;
	return 0;
}

🌽2.做返回值:

#include<iostream>
using namespace std;

//做参数
int& func() {
	static int a = 10;
	cout << &a << endl;
	return a;
}

int main()
{
	int& a = func();
	cout << &a << endl;
	return 0;
}

🍩5.传值和传引用的区别:

以值作为参数或者返回类型,不会传变量本身,而是传实参的一份临时拷贝。所以传值的效率是十分低下尤其是传参的个数多,次数多的时候。

#include<iostream>
#include<time.h>
using namespace std;

void func1(int a) {

}
void func2(int& a) {

}
int main()
{
	int a = 10;
	size_t begin1 = clock();
	for (int i = 0; i < 100000; i++)
		func1(a);
	size_t end1 = clock();
	size_t begin2 = clock();
	for (int i = 0; i < 100000; i++)
		func2(a);
	size_t end2 = clock();
	cout << end1 - begin1 << endl << end2 - begin2 << endl;
}

0表示小于1ms,并不是没有时间。

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

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

相关文章

C语言之字符函数总结(全部!),一篇记住所有的字符函数

前言 还在担心关于字符的库函数记不住吗&#xff1f;不用担心&#xff0c;这篇文章将为你全面整理所有的字符函数的用法。不用记忆&#xff0c;一次看完&#xff0c;随查随用。用多了自然就记住了 字符分类函数和字符转换函数 C语言中有一系列的函数是专门做字符分类和字符转换…

【AI基础】第三步:纯天然保姆喂饭级-安装并运行chatglm2-6b

chatglm2构建时使用了RUST&#xff0c;所以在安装chatglm2之前&#xff0c;先安装RUST。 此系列文章列表&#xff1a; 【AI基础】第一步&#xff1a;安装python开发环境-windows篇_下载安装ai环境python-CSDN博客 【AI基础】第一步&#xff1a;安装python开发环境-conda篇_mini…

springboot+minio+kkfileview实现文件的在线预览

在原来的文章中已经讲述过springbootminio的开发过程&#xff0c;这里不做讲述。 原文章地址&#xff1a; https://blog.csdn.net/qq_39990869/article/details/131598884?spm1001.2014.3001.5501 如果你的项目只是需要在线预览图片或者视频那么可以使用minio自己的预览地址进…

python 多任务之多进程

多任务 优势 多个任务同时执行可以大大提高程序执行效率&#xff0c;可以充分利用CPU资源&#xff0c;提高程序的执行效率 概念 是指在同一时间内执行多个任务 多进程 概念 进程&#xff08;process&#xff09;是资源分配的最小单位&#xff0c;他是操作系统进行资源分配…

EKF在LiFePO4电池SOC估算中不好用?一问带你破解EKF应用难题

磷酸铁锂电池因为平台区的存在&#xff0c;导致使用戴维南模型EKF的方法时&#xff0c;无法准确进行SOC准确预估。所以最近搜索了大量关于磷酸铁锂电池SOC预估的论文、期刊&#xff0c;但我被海量忽略客观事实、仅为了毕业的硕士论文给震惊到了。很多论文为了掩饰平台区的存在&…

C++ OpenCV 图像分类魔法:探索神奇的模型与代码

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

基于SSM的旅游民宿预定系统【源码】【运行教程】

基于SSM的旅游民宿预定系统 一、项目介绍1. 游客功能2. 管理员功能3. 高级功能 二、项目技术栈三、项目运行四、项目演示总结 大家好&#xff0c;这里是程序猿代码之路&#xff01;随着旅游业的快速发展&#xff0c;民宿作为一种独特的住宿方式越来越受到游客的喜爱。为了提升用…

【Linux操作系统】Linux中进程的五种状态:R、S、D、T、X以及僵尸进程、孤儿进程

操作系统中有许多同时执行的进程&#xff0c;这些进程都可能处于不同的状态代表着不同的含义。 R运行状态(running) 概念&#xff1a;并不意味着进程一定在运行中&#xff0c;它表明进程要么是在运行中要么在运行队列里。 我们运行可执行程序myproc利用指令 ps ajx可以看到进程…

git凭证

默认是manager # 将凭证缓存到内存中&#xff0c;默认缓存15分钟 git config --global credential.helper cache# 将凭证存储到磁盘上的纯文本文件中 git config --global credential.helper store# 使用 Git 凭证管理器 git config --global credential.helper manager-core查…

微服务开发与实战Day03

一、导入黑马商城项目 资料文档&#xff1a;Docs 1. 安装MySQL ①删除root目录下的mysql rm -rf mysql/ ②把课前资料里的mysql目录上传到root目录下 ③创建一个通用网络 docker network create hm-net ④使用下面的命令安装MySQL docker run -d \--name mysql \-p 330…

CMakeLists如何多行注释

在使用Visual Studio编写CMakeLists的时候你可能会遇到需要多行注释的情况&#xff0c;可又不知道快捷键是什么。。。 其实你只需要敲个 #[[ 就行了&#xff0c;另外一般方括号VS会自动帮你补全&#xff0c;之后将需要注释的内容放在第二个方括号与第三个方括号之间就完成注释…

今天是放假带娃的一天

端午节放假第一天 早上5点半宝宝就咔咔乱叫了&#xff0c;几乎每天都这个点醒&#xff0c;准时的很&#xff0c;估计他是个勤奋的娃吧&#xff0c;要早起锻炼婴语&#xff0c;哈哈 醒来后做饭、洗锅、洗宝宝的衣服、给他吃D3&#xff0c;喂200ml奶粉、给他洗澡、哄睡&#xff0…

【上篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。 在本文中,我将与大家分享我在阅读一篇长达 30 页的综合性论文时获得的见解,该论文深入探讨了 YOLO 模型的进步。 这篇评论全面概述了 YOLO 框架的演变过程,…

Python教程:Python操作MySQL基础使用

8、Python操作MySQL基础使用 8.1 安装pymysql pip install pymysql8.2 测试连接 测试代码 from pymysql import Connection# 获取到MySQL数据库的链接对象 conn Connection(# 主机名hostlocalhost,# 端口号,默认3306port3306,# 账户名userroot,# 密码password3535 )# 打印…

实现Ingress-Nginx Controller高可用方案

文章目录 前提准备1.修改Ingress-Controller 运行模式为hostNetwork并生效2.给部署ingress-controller的节点打标签3.查看ingress-controller的部署情况 方式一&#xff1a;LVSKeepalivedNginxIngress一、部署ipvsadm和keepalived二、配置keepalived1.配置lvs01(keepalived mas…

3.haproxy负载均衡

haproxy负载均衡 一、haproxy介绍1、负载均衡类型 二、haproxy配置文件1、backend2、frontend 三、haproxy实现MySQL负载均衡 —— 4层1、后端两台MySQL配置双主复制2、安装配置haproxy2.1 安装软件2.2 编辑配置2.3 启动haproxy2.4 测试通过haproxy正常连接MySQL 四、haproxy实…

机器学习----奥卡姆剃刀定律

奥卡姆剃刀定律&#xff08;Occam’s Razor&#xff09;是一条哲学原则&#xff0c;通常表述为“如无必要&#xff0c;勿增实体”&#xff08;Entities should not be multiplied beyond necessity&#xff09;或“在其他条件相同的情况下&#xff0c;最简单的解释往往是最好的…

容器化部署fastdfs文件存储

目录 一、软件信息 二、构建fastdfs镜像 三、docker 启动fdfs服务 四、k8s部署fdfs服务 1、fdfs部署文件 五、外部服务访问 一、软件信息 fastdfs版本&#xff1a;fastdfs:V5.11 libfastcommon版本: V1.0.36 fastdfs-nginx-module版本&#xff1a;V1.20 nginx版本&am…

【python】OpenCV—Blob Detection(11)

学习来自OpenCV基础&#xff08;10&#xff09;使用OpenCV进行Blob检测 文章目录 1、cv2.SimpleBlobDetector_create 中文文档2、默认 parameters3、配置 parameters附录——cv2.drawKeypoints 1、cv2.SimpleBlobDetector_create 中文文档 cv2.SimpleBlobDetector_create 是 O…

LeetCode72编辑距离

题目描述 解析 一般这种给出两个字符串的动态规划问题都是维护一个二维数组&#xff0c;尺寸和这两个字符串的长度相等&#xff0c;用二维做完了后可以尝试优化空间。这一题其实挺类似1143这题的&#xff0c;只不过相比1143的一种方式&#xff0c;变成了三种方式&#xff0c;就…