当前位置: 首页 > news >正文

【C++篇】启航——初识C++(下篇)

 接上篇【C++篇】启航——初识C++(上篇)

目录

一、引用

1.引用的概念

2.引用的基本语法

3.引用的特点 

3.1 别名

3.2 不占用额外内存

3.3 必须初始化

3.4 不能为 NULL

4.引用的使用 

4.1 函数参数传递

4.2 返回值

4.3 常量引用

5.引用和指针的关系 

(1).基本定义

(2).初始化

(3).改变指向

(4).访问对象

 (5).内存大小

(6).安全性

二、inline 

1.定义

2.使用方法

3.优点

4.注意事项

5.适用场景

三、nullptr

总结


一、引用

1.引用的概念

引用(Reference)是 C++ 中的一种类型,它提供了一个变量的别名。引用并不是一种独立的数据类型,而是对已有变量的另一种视图。引用的声明使用 & 符号。
引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间,它和它引⽤的变量共⽤同⼀块内存空间。⽐如:⽔壶传中李逵,宋江叫"铁⽜",江湖上⼈称"⿊旋⻛";林冲,外号豹⼦头;

2.引用的基本语法

int a = 10;       // 定义一个整数变量
int &b = a;      // b 是 a 的引用

在上面的例子中,b 作为 a 的引用,ba 是同一个对象,修改 b 的值实际上会改变 a 的值。

3.引用的特点 

引用的特点:

1.别名:引用是一个变量的别名,对引用的所有操作实际上都是对原变量的操作。

2.不占用额外内存:引用不占用额外的内存空间,只是另一个指向相同内存地址的标识符。

3.必须初始化:引用在创建时必须初始化,并且一旦初始化后不可改变绑定的对象。

4.不能为 NULL:引用不能被赋值为 nullptr,必须引用一个有效的对象。

3.1 别名

引用是一个变量的别名。这意味着对引用的所有操作都是直接对其所引用的变量的操作。引用没有独立的内存空间,它只是在原变量的基础上提供了一个新的名字。

#include <iostream>int main() {int a = 42;        // 定义一个整数变量 aint &b = a;       // b 是 a 的引用std::cout << "a: " << a << ", b: " << b << std::endl; // 输出 a: 42, b: 42b = 100;          // 通过引用 b 修改 a 的值std::cout << "After changing b..." << std::endl;std::cout << "a: " << a << ", b: " << b << std::endl; // 输出 a: 100, b: 100return 0;
}

在这个示例中,ba 的引用,对 b 的修改直接影响 a,反之亦然。

3.2 不占用额外内存

引用本质上是一个别名,不会占用新的内存空间。它只是指向已有变量的地址。因此,引用操作不会增加内存的使用。

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int main()
{int a = 0;// 引⽤:b和c是a的别名 int& b = a;int& c = a;// 也可以给别名b取别名,d相当于还是a的别名 int& d = b;++d;// 这⾥取地址我们看到是⼀样的 cout <<"a:" << &a << endl;cout <<"b:" << &b << endl;cout <<"c:" << &c << endl;cout <<"d:" << &d << endl;return 0;
}

在这个例子中,a、b、c、d的地址相同,证明引用并不占用额外的内存空间。 

3.3 必须初始化

引用在创建时必须被初始化。它不能在声明后再被赋值或指向其他变量。这一特性使得引用在使用时更加安全,避免了指向无效对象的风险。

#include <iostream>int main() {int a = 5;// int &b; // 错误:引用必须在声明时初始化int &b = a; // 正确:b 在声明时被初始化为 astd::cout << "a: " << a << ", b: " << b << std::endl; // 输出 a: 5, b: 5return 0;
}

试图声明一个未初始化的引用 b 会导致编译错误,而在初始化时,引用可以安全地与一个变量绑定。 

3.4 不能为 NULL

引用不能被赋值为 nullptr,它必须引用一个有效的对象。这意味着引用在创建后始终是有效的,避免了指向空地址的风险。

#include <iostream>int main() {int a = 10;int &b = a; // 正确,b 引用 a// int &c = nullptr; // 错误:引用不能为 NULLstd::cout << "b: " << b << std::endl; // 输出 b: 10return 0;
}

试图将引用 c 赋值为 nullptr 会导致编译错误。这确保了引用始终指向有效的对象。

4.引用的使用 

4.1 函数参数传递

使用引用作为函数参数可以有效避免大对象的复制,从而节省内存和时间。通过引用传递参数,函数可以直接修改原始数据,而无需创建副本。

#include <iostream>void increment(int &num) {num += 1; // 直接修改原始数据
}int main() {int value = 5;increment(value); // 传递 value 的引用std::cout << "Incremented value: " << value << std::endl; // 输出 6return 0;
}

在这个示例中,increment 函数接受 num 的引用,对 num 的修改直接影响 value,避免了复制的开销。

4.2 返回值

C++ 中的函数可以返回引用,这样可以在函数外部直接修改原始数据。这种方式在某些情况下可以提高效率,但需要谨慎使用,尤其是返回局部变量的引用是危险的。

#include <iostream>int& getReference(int &x) {return x; // 返回 x 的引用
}int main() {int a = 10;getReference(a) = 20; // 直接修改 astd::cout << "Updated value: " << a << std::endl; // 输出 20return 0;
}

4.3 常量引用

常量引用(const 引用)允许我们通过引用访问变量,但不允许修改它。这在需要保护数据不被意外修改时非常有用,尤其是在传递大型对象时,可以避免复制并保护原始数据。

#include <iostream>void printValue(const int &num) {std::cout << "Value: " << num << std::endl; // 只读操作
}int main() {int a = 10;printValue(a); // 输出 10printValue(20); // 可以传递字面量,输出 20return 0;
}

在这个例子中,printValue 函数接受 const int &num 作为参数,意味着它只能读取 num 的值,而不能修改。这样不仅保证了数据的安全性,还避免了复制的开销。

5.引用和指针的关系 

引用和指针是 C++ 中两个重要的概念,它们都可以用于间接访问变量,但在语法、功能和使用方式上存在显著差异。下面将从几个方面比较它们。

(1).基本定义

引用引用是一个变量的别名,它指向一个已有变量,并且在创建时必须初始化。引用不占用额外的内存空间,只是原变量的另一个名称。

指针指针是一个变量,它存储一个地址,指向另一个变量的内存位置。指针在定义时不一定要初始化,可以在之后赋值。

(2).初始化

引用:在定义引用时,必须立即初始化并引用一个有效的对象。一旦绑定到某个变量后,就无法改变引用的对象。

int a = 10;
int &b = a; // 必须初始化

指针:指针在定义时不需要初始化,可以稍后赋值。指针可以随时指向不同的对象。q

int *p; // 不初始化,指向未知
int a = 10;
p = &a; // 指向 a

(3).改变指向

引用:引用一旦初始化后,就不可以再改变引用的对象。

int a = 10;
int &b = a;
// b = 20; // 这将改变 a 的值为 20,但 b 仍然引用 a

指针:指针可以在程序运行时动态改变指向的对象。 

int a = 10;
int b = 20;
int *p = &a; // p 指向 a
p = &b;      // p 现在指向 b

(4).访问对象

引用:可以直接使用引用访问所引用的对象,语法上更简洁。

int a = 10;
int &b = a;
std::cout << b; // 直接访问

 指针:需要使用解引用操作符 * 访问指针指向的对象。

int a = 10;
int *p = &a;
std::cout << *p; // 解引用访问

 (5).内存大小

引用:在 sizeof 运算中,引用的结果是引用对象的大小,不占用额外的内存。

int a = 10;
int &b = a;
std::cout << sizeof(b); // 输出 sizeof(int)

指针:在 sizeof 运算中,指针的大小是固定的(在 32 位平台上通常为 4 字节,64 位平台上为 8 字节)。

int *p;
std::cout << sizeof(p); // 输出 4 或 8

(6).安全性

引用:因为引用不能为 NULL,也不会出现悬挂引用的问题,所以相对更安全。

指针:指针容易出现空指针和悬挂指针的问题,需要额外的小心和处理。

int *p = nullptr; // 空指针
// int a = *p; // 会导致未定义行为

二、inline 

1.定义

inline是C++中的一个关键字,主要用于建议编译器在调用函数的地方直接插入该函数的代码,而不是通过常规的函数调用。这通常用于小型函数,以减少函数调用的开销。

2.使用方法

在C++中,使用inline非常简单。你只需在函数定义前加上inline关键字。例如:

inline int add(int a, int b) {return a + b;
}

3.优点

  1. 性能提升:通过减少函数调用的开销(如压栈、弹栈等),可以提高程序性能,尤其是在频繁调用的小函数中。
  2. 代码可读性:小函数的使用使得代码更加模块化和易于理解。

4.注意事项

  1. 编译器的决定:虽然你可以建议编译器使用inline,但编译器并不一定会接受这个建议。它可能根据函数的复杂度和其他因素决定是否进行内联。
  2. 代码膨胀:如果一个inline函数被多次调用,编译器会在每个调用点插入函数体,可能导致代码膨胀,增加最终二进制文件的大小。
  3. 调试困难:内联函数在调试时可能会使得调用栈不如预期,因为调用点会被替换为函数体。

5.适用场景

  • 短小函数:适合将那些逻辑简单、体积小的函数标记为inline
  • 频繁调用的函数:例如,在循环中频繁调用的简单函数,使用inline可能会有显著性能提升。

三、nullptr

NULL实际是⼀个宏,在传统的C头⽂件( stddef.h )中,可以看到如下代码:
#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif
#endif
C++中 NULL 可能被定义为字⾯常量0,或者C中被定义为⽆类型指针( void* )的常量。不论采取何种定义,在使⽤空值的指针时,都不可避免的会遇到⼀些⿇烦,本想通过 f(NULL) 调⽤指针版本的
f(int*) 函数,但是由于 NULL 被定义成0,调⽤了 f(int x) ,因此与程序的初衷相悖。 f((void*)NULL) ;
调⽤会报错。
C++11中引⼊ nullptr nullptr 是⼀个特殊的关键字, nullptr 是⼀种特殊类型的字⾯量,它可以转换
成任意其他类型的指针类型。使⽤ nullptr 定义空指针可以避免类型转换的问题,因为 nullptr 只能被
隐式地转换为指针类型,⽽不能被转换为整数类型。
#include<iostream>
using namespace std;
void f(int x)
{cout << "f(int x)" << endl;
}
void f(int* ptr)
{cout << "f(int* ptr)" << endl;
}
int main()
{f(0);// 本想通过f(NULL)调⽤指针版本的f(int*)函数//但是由于NULL被定义成0,调⽤了f(int x),因此与程序的初衷相悖。 f(NULL);f((int*)NULL);// 编译报错:“f”: 2 个重载中没有⼀个可以转换所有参数类型 // f((void*)NULL);f(nullptr);return 0;
}

总结

引用、内联函数和 nullptr 是 C++ 中的重要特性,它们在代码的可读性、性能和安全性上都有显著影响。了解并合理使用这些特性,有助于编写出高效且可维护的代码。希望这篇博客对你有所帮助!如果有任何问题或想法,欢迎在评论区交流!

相关文章:

【C++篇】启航——初识C++(下篇)

接上篇【C篇】启航——初识C&#xff08;上篇&#xff09; 目录 一、引用 1.引用的概念 2.引用的基本语法 3.引用的特点 3.1 别名 3.2 不占用额外内存 3.3 必须初始化 3.4 不能为 NULL 4.引用的使用 4.1 函数参数传递 4.2 返回值 4.3 常量引用 5.引用和指针的关…...

Elasticsearch快速入门

文章目录 Elasticsearch快速入门核心概念倒排索引基本使用索引操作创建索引类型映射[了解]数据类型[了解] 查看索引删除索引 文档操作添加文档修改文档删除文档查询文档准备数据主键查询精确查询匹配查询 Elasticsearch快速入门 核心概念 Elasticsearch是面向文档的&#xff…...

uniapp微信小程序遮罩层u-popup禁止底层穿透

添加 touchmove.prevent&#xff0c;遮罩层底部的页面就不会滑动了微信开发者工具不生效&#xff0c;真机生效 <u-popup :show"showEwm" close"closeEwm" mode"center" touchmove.prevent><view class"ewmshow"></vie…...

【RocketMQ】秒杀设计与实现

&#x1f3af; 导读&#xff1a;本文档详细探讨了高并发场景下的秒杀系统设计与优化策略&#xff0c;特别是如何在短时间内处理大量请求。文档分析了系统性能指标如QPS&#xff08;每秒查询率&#xff09;和TPS&#xff08;每秒事务数&#xff09;&#xff0c;并通过实例讲解了…...

高级架构师面试题

一、技术深度方面 微服务架构的核心概念和优势&#xff1a; • 核心概念&#xff1a;将一个大型的应用拆分为多个小型的、独立部署的服务&#xff0c;每个服务都围绕着特定的业务功能进行构建&#xff0c;服务之间通过轻量级的通信机制进行交互。 • 优势&#xff1a; • 独…...

phpstudy简易使用

注意&#xff0c;本文所述的操作步骤均建立在电脑上已经完成php环境变量的配置与vscode的安装之上 、...

ubuntu server 常用配置

这里写目录标题 0001 虚拟机静态IP0002 vim tab 4个空格0003 设置时区0004 网络端口查看端口开放端口 0005 修噶机主机名 0001 虚拟机静态IP win网络链接&#xff0c;IP地址&#xff1a;192.168.220.1 - NAT网关&#xff1a;192.168.220.2 - ubuntu静态IP设置&#xff1a; ca…...

[Day 82] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

AI在風險控制中的應用案例 風險控制是企業管理中至關重要的一環&#xff0c;AI技術的引入為風險控制帶來了前所未有的自動化和智能化。無論是在金融、保險、製造業&#xff0c;還是網絡安全中&#xff0c;AI都能有效地分析和預測潛在風險。本文將探討AI在風險控制中的應用&…...

微信小程序map组件自定义气泡真机不显示

最近遇到一个需求需要使用uniapp的map自定义气泡 &#xff0c;做完之后发现在模拟器上好好的&#xff0c;ios真机不显示&#xff0c;安卓页数时好时不好的 一番查询发现是小程序的老问题了&#xff0c;网上的方法都试了也没能解决 后来看到有人说用nvue可以正常显示&#xff0c…...

数据结构之链表(2),双向链表

目录 前言 一、链表的分类详细 二、双向链表 三、双向链表的实现 四、List.c文件的完整代码 五、使用演示 总结 前言 接着上一篇单链表来详细说说链表中什么是带头和不带头&#xff0c;“哨兵位”是什么&#xff0c;什么是单向什么是双向&#xff0c;什么是循环和不循环。然后实…...

STL之list篇(下)(从底层分析实现list容器,逐步剥开list的外表)

文章目录 前言一、list的数据结构和类实现需求1.1 数据结构1.2 list类实现需求 二、list迭代器的实现2.1 为什么list不能直接把迭代器当作指针一样使用&#xff1f;2.2 list迭代器的框架设计2.3 *和-> 操作符的重载2.4 和-- 操作符的重载2.5 !和 操作符的重载 三、 list的函…...

视频去水印的3个技巧,教你无痕去水印

许多视频平台为了推广自身品牌或者广告用途&#xff0c;会在视频上添加水印。这些水印不仅影响了视频的美观&#xff0c;还可能限制了内容的传播范围。幸运的是&#xff0c;有几种简单而有效的方法可以帮助我们去除视频中的水印&#xff0c;同时保持视频的原始画质和观感。以下…...

LSTM模型改进实现多步预测未来30天销售额

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…...

八LAMP搭建

# LAMP ## 一、知识回顾 ### FTP samba nfs 特点 - 借用Linux用户作为映射用户&#xff0c;进行权限管理 - 软件本身还有管理控制权限 #### 客户端连接到服务器后进行读写执行等操作 &#xff0c;必须同时具有: - 软件许可的权限 vsftpd: anon upload enableYES - 文件…...

Windows——解除Windows系统中文件名和目录路径的最大长度限制

第一步&#xff1a;打开本地组策略编辑器 按下Win R键打开运行窗口&#xff0c;输入 gpedit.msc 并回车&#xff0c;打开本地组策略编辑器。 第二步&#xff1a;开启 长路径设置 第三步&#xff1a;重启计算机...

黑名单与ip禁令是同一个东西吗

黑名单和IP禁令相关&#xff0c;但它们并不是完全相同的概念。以下是它们之间的区别&#xff1a; 黑名单 定义&#xff1a;黑名单通常是一个包含不允许或被禁止的用户、IP地址、域名或其他实体的列表。用途&#xff1a;用于阻止特定用户或实体访问某个系统或服务。黑名单可以…...

FuTalk设计周刊-Vol.075

国庆75周年&#xff0c;也是第75期周刊&#xff5e; 祝大家国庆快乐&#xff5e;&#xff01; #AI漫谈 热点捕手 1.万字深剖&#xff01;13位AI巨擘联袂&#xff0c;1.6万字解码生成式AI产品「全攻略」 “生成式人工智能产品”主题论坛&#xff0c;邀请到了来自腾讯、商汤科…...

PE节表中是否存在misc.VirtualSize 比SizeofRawData还要大的情况

确实是存在的,这是win10自带记事本,可以看到 确实是大.所以在申请imagebuffer的时候,还是需要比较大小.但是在还原的时候.只考虑sizeofRawData即可>...

栈及笔试题

目录 栈的实现 1、数组栈 2、链式栈 栈的创建 栈的打印 内存泄漏 栈溢出 练习 有效的括号 栈的实现 栈后入先出 1、数组栈 &#xff08;最佳实现&#xff0c;且访问数据的时候CPU告诉访存命中率比较高&#xff0c;因为地址连续存放&#xff0c;访问时CPU从cache里一…...

【工程测试技术】第3章 测试装置的基本特性,静态特性和动态特性,一阶二阶系统的特性,负载效应,抗干扰性

目录 3.1 概述 1测量装置的静态特性 2.标准和标准传递 3.测量装置的动态特性 4.测量装置的负载特性 5.测量装置的抗干扰性 1.线性度 2.灵敏度 3.回程误差 4.分辨力 5.零点漂移和灵敏度漂移 3.3.1 动态特性的数学描述 1.传递函数 2.频率响应函数 3.脉冲响应函数 …...

ireport 5.1 中文生辟字显示不出来,生成PDF报字体找不到

ireport生成pdf里文字不显示。本文以宋体中文字不显示为例。 问题&#xff1a;由浅入深一步一步分析 问题1、预览正常&#xff0c;但生成pdf中文不显示 报告模板编辑后&#xff0c;预览正常&#xff0c;但生成pdf中文不显示。以下是试验过程&#xff1a; 先编辑好一个报告单模…...

给Ubuntu虚拟机设置静态IP地址(固定IP)

查看 为Ubuntu虚拟机配置静态IP地址&#xff08;固定IP&#xff09;的方法经过亲自测试&#xff0c;已被证实有效。 这里你记得网关就可以了&#xff0c;等下要用 查看配置前的网络信息 ifconfig 查看网关 route -n 配置 配置网络文件 cd /etc/netplan/ ls 查看自己的文件的名…...

spring boot文件上传之x-file-storage

spring boot文件上传之x-file-storage 今天看到一个文件上传的开源组件x-file-storage&#xff0c;官方地址如下&#xff1a; https://x-file-storage.xuyanwu.cn/#/ 该组件官网是这样介绍的&#xff0c;如下&#xff1a; 一行代码将文件存储到本地、FTP、SFTP、WebDAV、阿…...

Object.values() 、 Object.keys()

拿到当前对象里面的value值 // 假设你有一个对象 const myObject {name: Kimi,age: 30,country: Moon };// 获取对象的所有值 const values Object.values(myObject);// 输出值数组 console.log(values); // ["Kimi", 30, "Moon"] 如果你需要在 Vue 组…...

脸爱云管理系统存在任意文件上传漏洞

漏洞描述 脸爱云一脸通智慧管理平台是一套功能强大、运行稳定、操作简单方便、用户界面美观的一脸通系统。该平台整合了人脸识别技术和智能化解决方案&#xff0c;可以实现识别和管理个体身份&#xff0c;为各种场景提供便捷的身份验证和管理功能。其存在任意文件上传漏洞&…...

elasticsearch_exporter启动报错 failed to fetch and decode node stats

最近把服务器迁移到了ubuntu系统&#xff0c;结果发现在centos还正常运行的elasticsearch_exporter&#xff0c;用systemd启动后一直报错 failed to fetch and decode node stats 在网上翻了大半年&#xff0c;竟然都无解&#xff01;这种报错&#xff0c;很明显就是你的ES密码…...

Git 使用方法

简介 Git常用命令 Git 全局设置 获取Git 仓库 方法二用的比较多 将仓库链接复制 在 git base here ----> git clone 仓库链接 工作区、暂存区、版本库 Git 工作区中文件中的状态 本地仓库的操作 远程仓库操作 git pull 将代码推送到远程仓库 1. git add 文件名 ---放…...

生产环境升级mysql流程及配置主从服务

之前写到过mysql升级8.4的文章, 因此不再介绍mysql的安装过程 避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客 生产环境升级mysql8.4.x流程 安装mysql 参考之前文章: 避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客…...

论软件体系结构的演化

摘要 2022年3月&#xff0c;我加入了公司的新智慧公交平台项目研发团队&#xff0c;并担任系统架构师角色&#xff0c;负责系统整体架构的设计与评审。该项目采用了物联网三层架构模型&#xff0c;其中设备接入层和网络交互层基于公司的中台战略&#xff0c;我们有效复…...

【go入门】常量

目录 定义枚举iota思考题 定义 go语言常量的定义和其他语言类似&#xff0c;常量中的数据类型只能是布尔型&#xff0c;数字型&#xff08;整型、浮点型、复数&#xff09;和字符串型 常量的定义方式和变量一样&#xff0c;只不过变量定义使用 var 关键字&#xff0c;而常量定…...

山西做网站的公司哪个好/广告开户南京seo

二维平面作图 ? 三维空间作图 ? 符号作图 ? Matlab 绘图过程/原理 2 手工作图如何画出 数学软件 Matlab —— 二维平面作图 —— 三维空间作图 1 本讲主要内容......是通过描点、连线来实现的,故在 画一个曲线图形之前,必须先取得该图形上的 一系列的点的坐标(即横坐标和纵坐…...

湖南省建设工程造价管理总站/怎么弄属于自己的网站

TI DAVINCI 使用最新的内核是montavista linux-2.6.18&#xff0c;之前说过&#xff0c;国内很多公司&#xff0c;包括开发板的软件包&#xff0c;一直在使用montavista linux-2.6.10&#xff0c;这个版本准确来说是比较低的&#xff0c;实时性肯定没2.6.18好&#xff08;Monta…...

2022年时事新闻摘抄/seo可以从哪些方面优化

所谓程序锁就是当用户启动某个程序的时候需要用户校验,如果校验成功,则进入应用程序. 也可以用于功能锁,也就是当用户使用程序的某个时,进行进行校验如果校验成功则进入该功能. 效果如下图所示: 该项目是google的开源项目. 下载地址:http://download.csdn.net/detail/johnny…...

网站建设方法叁金手指下拉丶/下载百度到桌面上

最近在反编译class和jar包的时候&#xff0c;发现部分class无法反编译出来&#xff0c;换了最新版本的jd-gui和多个版本都不行&#xff0c;只能放弃了 解决方案&#xff1a;GitHub上找Luyten这个工具反编译 luyten是Procyon的GUI&#xff0c;是一款操作简单、功能实用的java反编…...

做配送平台网站多少钱/昆明seo案例

点击上方蓝字关注我们微信公众号&#xff1a;OpenCV学堂关注获取更多计算机视觉与深度学习知识mean.binaryproto文件生成用Caffe框架训练图像相关的视觉任务时候&#xff0c;在预处理的时候会先求图像的均值&#xff0c;这个均值其实是整个数据集的图像均值&#xff0c;Caffe中…...

万网x3主机l系统放两个网站/关键词推广排名

! 下面的工具适合于redis 哨兵模式&#xff0c;不适合于redis cluster模式&#xff01; 在redis cluster模式下&#xff0c;执行redis-dump&#xff0c;会碰到下面的问题。 CROSSSLOT Keys in request dont hash to the same slot redis dump 推荐一个redis cluster下的迁移…...