C++基础知识学习记录—引用
1、引用的概念
概念:引用相当于给变量取个别名
对引用进行操作与直接操作变量相同,注意引用类型与变量类型一致
#include<iostream>
using namespace std;
int main(){int a=10;int& cite_a = a;//操作引用cite_a 与操作变量a完全一样cout << a << "======" << cite_a << endl;cout << &a << "======" << &cite_a << endl;a++;cout << a << "=======" << cite_a << endl;cite_a =900;cout << a << "======" << cite_a << endl;return 0;
}
2、引用的性质
1、成为一个变量的引用后,就不能称为其他变量的引用
2、引用必须初始化,并且不可以为NULL
3、当作为纯数字的引用时,需要加const修饰,代表其引用的数值不可修改
4、变量的引用如果使用const修饰,此时叫常引用,不能通过引用修改数值,但可以通过原变量修改数值
5、可以使指针指向引用的地址,相当于指向了原变量
6、可以对指针建立引用,此时引用相当于指针的别名
1、性质1:成为一个变量的引用后,就不能成为其他变量的引用
#include<iostream>
using namespace std;
int main(){int a=10;int & cita_a=a;//引用的性质1:称为一个变量的引用后,就不能称为其他变量的引用int b=90;cite_a = b;//这里是把b的值赋值给了cite_acout << cite_a << "=====" << a << endl;cout << (&cite_a==&a) << "====" << (&cite_a==&b) << endl;// cout << (1==3) << endl;// &cite_a = b; //错误// int& cite_a =b ;//错误 不允许再次称为其他变量的引用}
2、引用的性质2:引用必须初始化,并且不可以为NULL
#include<iostream>
using namespace std;
int main(){//引用的性质2:声明引用时,必须对其初始化,且不能初始化为NULLint c=90;//int& cite_c; //报错//int& cite_c = NULL;//报错int& cite_c = c; cout << cite_c << endl;return 0;
}
3、引用的性质3:当作为纯数字的引用时,需要加const修饰,代表其引用的数值不可修改
#include<iostream>
using namespace std;
int main(){//引用的性质3:当作为纯数字引用时,需要加const修饰,代表其引用的数值不可更改// int& cite_a=90;//报错 未加constconst int& a = 3;cout << a << endl;// a++; //报错 引用的数值不可更改return 0;
}
4、引用的性质4:变量的引用如果使用const修饰,此时叫常引用,不能通过引用修改数值,但可以通过原变量修改数值
#include<iostream>
using namespace std;
int main(){//引用的性质4:使用const修饰的引用,叫常引用,常引用不可以通过引用修改数值,但是可以通过原始变量修改数值int a=500;const int& cite_a=a;cout << cite_a << "====" << a << endl;// cite_a++;//报错 const修饰 不能通过引用修改数值a++;//可以通过原始变量修改数值cout << cite_a << "====" << a << endl;return 0;
}
5、引用的性质5:可以使指针指向引用,相当于指向了原变量
#include<iostream>
using namespace std;
int main(){//引用的性质5:可以使指针指向引用,相当于指向了原变量int a=10;int& cite_a = a;int* c = &cite_a; //c指向a的引用,相当于指向了acout << a << "==" << cite_a << "====" << *c << endl;cout << &a << "====" << &cite_a << "====" << c << endl;return 0;
}
6、引用的性质6:可以对指针建立引用,此时引用相当于指针的别名
#include<iostream>
using namespace std;
int main(){//引用的性质6:可以对指针建立引用,此时引用相当于指针的别名int a=10;int* b = &a;int*& cite_b = b; //引用cite_b指向指针b,此时cite_b相当于指针b的别名cout << b << "====" << cite_b << "===" << &a << endl;cout << *b << "====" << *cite_b << "====" << a << endl;return 0;
}
引用和指针的区别
1、定义方式不同:引用是一个别名,通过使用&在变量定义时定义;指针是一种数据类型,存储了某一个变量的地址,通过使用*在变量定义时定义。
2、空值:引用在定义的时候必须初始化,并且不能引用空值;指针可以在定义的时候不初始化,也可以指向NULL。
3、可修改性:引用在初始化的时候绑定到一个变量上,不能再绑定到其他变量上;指针可以在任何时候修改指向的变量。
4、空引用和空指针:指针可以为空,但引用不允许为空
5、使用方式:引用在使用的时候可以直接使用,指针通过*,才能获取所指向变量的值
6、空间占用:引用不占用额外的空间,指针需要占用8字节的空间来存储地址
7、引用作为函数参数:引用作为函数参数,传递的是原对象的别名。函数内部对引用
的修改会影响到原对象;指针作为函数参数时,传递的是变量的地址,函数内部对
变量的修改也会影响带函数外部原来的变量。
3、引用的应用
C++中函数参数的传递有三种:
1、值传递:只是实参的拷贝,形参改变不会影响到实参
2、引用传递:不会产生拷贝副本,相当于操控变量本身,形参改变会影响到实参
3、指针传递:是把变量的地址传递给函数,函数内部对变量的修改也会影响带函数外部原来的变量。
PS:引用传递可以提高参数的传递效率,因为引用传递不需要给形参开辟空间,也不需要为其赋值,可以使用其操作变量。如果只想提取到变量值。可以使用const修饰引用,避免不小心更改到变量的值。
#include <iostream>
using namespace std;void fun(int& num);
int main()
{int c = 100;fun(c);cout << c << endl;return 0;
}
//函数引用传参,可以改变函数外的值
void fun(int& num)
{num=num*2;cout << num << endl;
}
相关文章:
C++基础知识学习记录—引用
1、引用的概念 概念:引用相当于给变量取个别名 对引用进行操作与直接操作变量相同,注意引用类型与变量类型一致 #include<iostream> using namespace std; int main(){int a10;int& cite_a a;//操作引用cite_a 与操作变量a完全一样cout &l…...
AWS Savings Plans 监控与分析工具使用指南
一、背景介绍 1.1 什么是 Savings Plans? AWS Savings Plans 是一种灵活的定价模式,通过承诺持续使用一定金额的 AWS 服务来获得折扣价格。它可以帮助用户降低 AWS 使用成本,适用于 EC2、Fargate 和 Lambda 等服务。 1.2 为什么需要监控? 优化成本支出跟踪使用情况评估投…...
【AI学习】关于 DeepSeek-R1的几个流程图
遇见关于DeepSeek-R1的几个流程图,清晰易懂形象直观,记录于此。 流程图一 来自文章《Understanding Reasoning LLMs》, 文章链接:https://magazine.sebastianraschka.com/p/understanding-reasoning-llms?continueFlagaf07b1a0…...
C++ ——从C到C++
1、C的学习方法 (1)C知识点概念内容比较多,需要反复复习 (2)偏理论,有的内容不理解,可以先背下来,后续可能会理解更深 (3)学好编程要多练习,简…...
【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案
建筑设计公司在项目执行过程中,会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。 操作需求:为了方便内部管理和向客户交付完整的设计方案,公司需要将每个项目文件…...
前端学习之Flex布局
<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Flex布局示例</title><style>.conta…...
游戏引擎学习第97天
回顾昨天并计划今天 在这期节目中,主要讲解了光照的概念,并进一步讨论了法线贴图光照的实现。节目的内容大致分为几个部分: 光照的基础概述:讨论了光的工作原理以及如何在编程图形时需要考虑光照问题。尽管这些概念并没有深入到…...
Mysql中存储引擎各种介绍以及应用场景、优缺点
概述 MySQL 提供了多种存储引擎,每种引擎有不同的特点和适用场景。以下是几种常见的 MySQL 存储引擎的详细介绍,包括它们的底层工作原理、优缺点,以及为什么 MySQL 默认选择某种引擎。 1. InnoDB 底层工作原理: 事务支持&#…...
PHP 运算符
PHP 运算符 概述 PHP 是一种广泛使用的开源服务器端脚本语言,它具有丰富的运算符集,这些运算符是编写 PHP 程序的基础。运算符用于执行各种数学、逻辑和比较操作。本篇文章将详细介绍 PHP 中常用的运算符,包括算术运算符、比较运算符、逻辑运算符、赋值运算符等。 算术运…...
Vue全流程--Vue3.0与Vue2.0响应式原理对比
Vue2中数据的响应式 需要使用Vue.set这么一个api,修改数据 需要使用Vue.delete这么一个api,删除数据 数据代理这个当面的理解可以看看我前面文章Vue全流程--数据代理的理解以及在Vue中的应用-CSDN博客 Vue3中数据的响应式 Vue3使用proxy这个api实现…...
C语言学习笔记:子函数的调用实现各个位的累加和
在C语言程序学习之初,我们都会学习如何打印 hello world,在学习时我们知道了int main()是主函数,程序从main函数开始执行,这是流程控制的一部分内容。在主函数中我们想要实现一些功能,比如求各个…...
【大模型】本地部署DeepSeek-R1:8b大模型及搭建Open-WebUI交互页面
本地部署DeepSeek-R1:8b大模型 一、摘要及版本选择说明1.1 摘要1.2 版本选择 二、下载并安装Ollama三、运行DeepSeek-R1:8b大模型四、安装Open WebUI增强交互体验五、关闭Ollama开机自动启动六、DeepSeek大模型启停步骤 一、摘要及版本选择说明 1.1 摘要 作为一名对 AI 和生成…...
Python 调用 Stabilityai API在本地生成图像
Python 调用 Stabilityai API在本地生成图像 摘要功能 代码结构关键技术代码下载立即体验 摘要 本程序利用硅基流动目前的免费 stabilityai/stable-diffusion-2-1 模型API,生成图像并下载到本地,用户可以通过输入描述性提示词来获取相应的图像。使用Pyt…...
Python3中异常处理:try-finally语句的示例
一. 简介 前面一篇文章简单学习了 try-finally语句结构,执行过程、以及使用场景。文章如下: Python3中异常处理:try-finally语句-CSDN博客 本文写一些简单的示例来继续学习 try-finally语句的使用。 二. Python3中异常处理:try…...
Lua限流器的3种写法
学而不思则罔,思而不学则殆 引言 上篇文章讲解了Lua脚本,事务和Pipline之间的使用方式和性能差距,本篇文章将聚焦Lua脚本,我将用三种写法来展现如何实现一个Redis限流器 固定窗口限流 固定窗口限流也是最简单的限流算法&#x…...
基于 GEE 利用插值方法填补缺失影像
目录 1 完整代码 2 运行结果 利用GEE合成NDVI时,如果研究区较大,一个月的影像覆盖不了整个研究区,就会有缺失的地方,还有就是去云之后,有云量的地区变成空值。 所以今天来用一种插值的方法来填补缺失的影像…...
linux部署ollama+deepseek+dify
Ollama 下载源码 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz sudo tar -C /usr -xzf ollama-linux-amd64.tgz启动 export OLLAMA_HOST0.0.0.0:11434 ollama serve访问ip:11434看到即成功 Ollama is running 手动安装deepseek…...
在微服务中,如何使用feign在各个微服务中进行远程调用
在微服务中,如何使用feign在不同微服务中进行远程调用 在微服务中,如何使用feign在不同微服务中进行远程调用 步骤: 第一步: 引入feign依赖 <dependency><groupId>org.springframework.cloud</groupId><…...
Kafka中的KRaft算法
我们之前的Kafka值依赖于Zookeeper注册中心来启动的,往里面注册我们节点信息 Kafka是什么时候不依赖Zookeeper节点了 在Kafka2.8.0开始就可以不依赖Zookeeper了 可以用KRaft模式代替Zookeeper管理Kafka集群 KRaft Controller和KRaft Leader的关系 两者关系 Lea…...
vue3 -- 集成 amap(高德地图)
🍍效果 本文介绍了如何在 Vue 3 项目中集成高德地图(AMap),并使用 PoiPicker 实现地点搜索功能。 文章首先通过 AMapLoader 异步加载高德地图 API,并初始化 Map 实例。同时,借助 AMapUI 组件库引入 PoiPicker,绑定搜索输入框,实现地点选择功能。PoiPicker 监听用户的 …...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
