指针与引用(函数形参的值传递,引用传递,指针传递)

函数调用之三种函数参数传递,今天终于分得清楚了! 形参和实参 函数的形参和实参具有以下特点: 1.形参变量只有在被调用的时候,才会分配内存单元,在调用结束是,即刻释放所分配的内存单元。,因此,形参只有在函数内部有效,函数调用结束返回主调函数后则不能再使用该形参变量。 2.实参可以是变量、常量、表达式、函数等等,无论实参是何种类型的,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此,应预先用赋值、输入等办法使实参获得确定值。 3.实参和形参在数量上、类型上、顺序上应该严格一致,否则会发生“类型不匹配”的错误。 4.函数调用中发生的数据传 阅读详情

本文转载原文地址,尊重原创

C++中的引用与指针的区别

指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向对象的类型和大小,因此想要通过void*指针操作对象必须进行类型转化。

★ 相同点:

1. 都是地址的概念;
   指针指向一块内存,它的内容是所指内存的地址;
   引用是某块内存的别名。

★ 区别:

1. 指针是一个实体,而引用仅是个别名;
2. 引用使用时无需解引用(*),指针需要解引用;
3. 引用只能在定义时被初始化一次,之后不可变;指针可变;
   引用“从一而终” ^_^
4. 引用没有 const,指针有 const,const 的指针不可变;
5. 引用不能为空,指针可以为空;
6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
typeid(T) == typeid(T&) 恒为真,sizeof(T) == sizeof(T&) 恒为真,但是当引用作为类成员名称时,其占用空间与指针相同4个字节(没找到标准的规定)。
7. 指针和引用的自增(++)运算意义不一样;

★ 联系

1. 引用在语言内部用指针实现(如何实现?)。
2. 对一般应用而言,把引用理解为指针,不会犯严重语义错误。引用是操作受限了的指针(仅容许取内容操作)。
引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n 是m 的一个引用(reference),m 是被引用物(referent)。
int m;
int &n = m;
n 相当于m 的别名(绰号),对n 的任何操作就是对m 的操作。例如有人名叫王小毛,他的绰号是“三毛”。说“三毛”怎么怎么的,其实就是对王小毛说三道四。所以n 既不是m 的拷贝,也不是指向m 的指针,其实n 就是m 它自己。

引用的一些规则如下:
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
(2)不能有NULL 引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。

以下示例程序中,k 被初始化为i 的引用。语句k = j 并不能将k 修改成为j 的引用,只是把k 的值改变成为6.由于k 是i 的引用,所以i 的值也变成了6.

int i = 5;
int j = 6;
int &k = i;
k = j; // k 和i 的值都变成了6;


上面的程序看起来象在玩文字游戏,没有体现出引用的价值。引用的主要功能是传递函数的参数和返回值。C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。

1)以下是“值传递”的示例程序。由于Func1 函数体内的x 是外部变量n 的一份拷贝,改变x 的值不会影响n, 所以n 的值仍然是0.

void Func1(int x)
{
x = x + 10;
}
int n = 0;
Func1(n);
cout << “n = ” << n << endl;// n = 0

2)以下是“指针传递”的示例程序。由于Func2 函数体内的x 是指向外部变量n 的指针,改变该指针的内容将导致n 的值改变,所以n 的值成为10.

void Func2(int *x)
{
(* x) = (* x) + 10;
}
⋯
int n = 0;
Func2(&n);
cout << “n = ” << n << endl; // n = 10

3)以下是“引用传递”的示例程序。由于Func3 函数体内的x 是外部变量n 的引用,x和n 是同一个东西,改变x 等于改变n,所以n 的值成为10.

void Func3(int &x)
{
x = x + 10;
}
⋯
int n = 0;
Func3(n);
cout << “n = ” << n << endl; // n = 10

 对比上述三个示例程序,会发现“引用传递”的性质象“指针传递”,而书写方式象“值传递”。实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用”这东西?
答案是“用适当的工具做恰如其分的工作”。
指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非常危险。
就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用?
如果的确只需要借用一下某个对象的“别名”,那么就用“引用”,而不要用“指针”,以免发生意外。比如说,某人需要一份证明,本来在文件上盖上公章的印子就行了,如果把取公章的钥匙交给他,那么他就获得了不该有的权利。

——————————

摘自「高质量c++编程」

指针与引用,在More Effective C++ 的条款一有详细讲述,我给你转过来

条款一:指针与引用的区别

指针与引用看上去完全不同(指针用操作符‘*’和‘->’,引用使用操作符‘。’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?
首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。
“但是,请等一下”,你怀疑地问,“这样的代码会产生什么样的后果?”

char *pc = 0;  // 设置指针为空值
char& rc = *pc;// 让引用指向空值

这是非常有害的,毫无疑问。结果将是不确定的(编译器能产生一些输出,导致任何事情都有可能发生),应该躲开写出这样代码的人除非他们同意改正错误。如果你担心这样的代码会出现在你的软件里,那么你最好完全避免使用引用,要不然就去让更优秀的程序员去做。我们以后将忽略一个引用指向空值的可能性。

因为引用肯定会指向一个对象,在C++里,引用应被初始化。
string& rs; // 错误,引用必须被初始化
string s("xyzzy");

string& rs = s; // 正确,rs指向s

指针没有这样的限制。

string *ps; // 未初始化的指针

// 合法但危险


不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性。

void printDouble(const double& rd)
{
cout << rd; // 不需要测试rd,它
} // 肯定指向一个double值
相反,指针则应该总是被测试,防止其为空:
void printDouble(const double *pd)
{
if (pd)
{ // 检查是否为NULL
cout << *pd;
}
}

指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变。

string s1(“Nancy”);
string s2(“Clancy”);
string& rs = s1; // rs 引用 s1
string *ps = &s1; // ps 指向 s1
rs = s2; // rs 仍旧引用s1,
// 但是 s1的值现在是
// “Clancy”
ps = &s2; // ps 现在指向 s2;
// s1 没有改变

总的来说,在以下情况下你应该使用指针,
一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空),
二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。
还有一种情况,就是当你重载某个操作符时,你应该使用引用。
最普通的例子是操作符[].这个操作符典型的用法是返回一个目标对象,其能被赋值。

vector v(10); // 建立整形向量(vector),大小为10;
// 向量是一个在标准C库中的一个模板(见条款35)
v[5] = 10; // 这个被赋值的目标对象就是操作符[]返回的值
如果操作符[]返回一个指针,那么后一个语句就得这样写:
*v[5] = 10;

但是这样会使得v看上去象是一个向量指针。因此你会选择让操作符返回一个引用。(这有一个有趣的例外,参见条款30)
当你知道你必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,你不应该使用指针。而在除此之外的其他情况下,则应使用指针假设你有

void func(int* p, int&r);
int a = 1;
int b = 1;
func(&a,b);

指针本身的值(地址值)是以pass by value进行的,你能改变地址值,但这并不会改变指针所指向的变量的值,
p = someotherpointer; //a is still 1

但能用指针来改变指针所指向的变量的值,
*p = 123131; // a now is 123131

但引用本身是以pass by reference进行的,改变其值即改变引用所对应的变量的值
r = 1231; // b now is 1231

尽可能使用引用,不得已时使用指针。

当你不需要“重新指向”时,引用一般优先于指针被选用。这通常意味着引用用于类的公有接口时更有用。引用出现的典型场合是对象的表面,而指针用于对象内部。

上述的例外情况是函数的参数或返回值需要一个“临界”的引用时。这时通常最好返回/获取一个指针,并使用 NULL 指针来完成这个特殊的使命。(引用应该总是对象的别名,而不是被解除引用的 NULL 指针)。
关于指针作为函数参数传递的理解 本来已经把指针和引用的知识都捋清楚了,但是中午编程遇到了一个传递数组的问题,一下想得多了点,然后又。。。。 被值传递,指针传递,引用传递,地址传递这几个概念弄晕了。看了十来篇博客,什么说法都有。参考课本和菜鸟教程还有一些优秀博客上的观点,加上自己实操,得出下面一些自己对指针传递的理解。 以下是本人粗浅理解,不知是否表述清晰,若有疑问或高见,请在评论区留言指正。 见代码: ... 阅读详情

相关推荐

激光雷达接收芯片选型指南:APD、SiPM、SPAD阵列的优缺点对比

本文深入对比了激光雷达接收芯片APD、SiPM和SPAD阵列的核心技术原理与性能差异。APD作为线性模式工作的稳健选择,动态范围大;SiPM具备单光子探测和高增益优势;而SPAD阵列凭借像素级数字读出和集成TDC,在时间分辨率与系统集成度上领先。文章从灵敏度、时间精度、动态范围及系统成本等多维度剖析,为不同应用场景(如车载雷达、Flash LiDAR、消费电子)的芯片选型提供实战指南。

ik6789012的博客 660

函数形参为指针和指针引用的区别

当函数的形参为指针时: 形参只是获得了实参的地址值,当你改变形参的指向时,实参的指向并不改变。 当函数的形参为指针引用时: 形参不仅仅获得了实参的地址值,还和实参地址绑定,改变形参的指向就能改变实参的指向。 示意图如下: 测试代码: #include <iostream> using namespace std; void ChangeAddr(int *addr) { cout << "指针传参修改cur的:" << endl; cout << "

weixin_43744293的博客 2627

【5G全网建设】Option3X和Option2模式建安市、兴城市和四水市核心网、承载网网络设计与部署

拓扑规划: Option 3X网络拓扑图规划 Option 2网络拓扑图规划 设备部署: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 数据配置: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 业务调试

weixin_67183034的博客 8869

指针和引用作为形参的区别

        引用做函数的形参:在函数内部,对这个形参做任何操作,相当于对实参做相同的操作。         指针做函数的形参:在函数内部,只有在这个形参的值没有变化的情况下,对其所指向的内容做任何操作,才相当于对实参所指向内容做的操作。而对这个指针本身做的操作只是这个形参(实参的副本)自己有变化,而不会影响实参指针,也不会影响实参所指内容。比如给这个形参做算术运算、用malloc在堆中动态分...

streamlet_h的博客 3740

如何在 VMware Workstation 虚拟机中利用 Nvidia 显卡的硬件加速功能

本文详细介绍了在VMware Workstation虚拟机中配置Nvidia显卡硬件加速的完整流程。重点包括:检查硬件兼容性、安装显卡驱动、编辑VMware配置文件启用PCI直通功能(需修改config.ini文件参数)、为虚拟机分配PCI设备等关键步骤。文章特别强调了配置注意事项,如系统资源需求、BIOS设置要求、驱动兼容性等问题,并建议操作前备份数据。通过此方法可实现虚拟机对Nvidia显卡的直接调用,适用于需要GPU加速的计算场景。

qq_39777550的博客 6706

基于因果推理的LLM去毒:精准定位注意力头实现高效干预

在大型语言模型(LLM)的部署与应用中,模型安全与可控性是核心挑战之一。传统方法如全参数微调成本高昂,且可能损害模型通用能力。本文聚焦于一种基于因果推理的精准干预技术,其原理在于利用因果发现算法定位Transformer模型中与“毒性”输出存在强因果关联的特定注意力头。该技术通过分析注意力头的激活模式与生成文本毒性分数之间的因果关系,识别出关键责任单元,而非依赖传统的相关性分析。其技术价值在于实现了轻量级、高可解释性的模型行为修正,能以极低的参数改动代价有效降低模型在敏感话题上的有害输出。在应用场景上,该方

weixin_32667439的博客 315

C++指针做形参与指针的引用做形参的区别

在C++编程时,有时需要用指针做参数,并在调用函数后,改变指针的内容。例如下面的程序 (1)*p直接修改指向的内容 #include<iostream> using namespace std; void func(int *p) { *p = 456; //修改了指针指向的值 } int main() { int num = 123; int* pN = &num; cout << *pN << "地址" <&...

琅嬛福地 2930

Spring Boot 3.5.4 + LangChain4j实战:用Milvus搭建企业级RAG问答系统(附阿里百炼API配置)

本文详细介绍了如何利用Spring Boot 3.5.4、LangChain4j与Milvus构建企业级RAG问答系统。内容涵盖从架构设计、阿里百炼API安全配置、Milvus部署优化,到RAG检索、会话管理等核心实现,并提供了生产级API设计、监控集成及性能优化等实战经验,旨在帮助开发者打造高可用、可维护的Java AI应用。

weixin_29054399的博客 610

C++指针参数引用

粘个代码占位置,以后有时间把指针函数,函数指针都补上 #include <iostream> using namespace std; void freePtr1(int* p1){ /*未释放内存前 -> p1 Address : 0012FDDC p1 value : 003429B8, 在这里,p1它也是一个变量,既然是一个变量, ...

weixin_30788731的博客 235

GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析

前言:ERA5主要提供DAILY和MONTHLY两大类别数据,其中主要包括气温、降水、压力、风速等。

等待着冬天的风的博客 3万+

机器人控制基础:伺服驱动器的泄放电阻

摘要:伺服驱动器泄放电阻用于消耗电机减速或制动时产生的再生电能,防止母线电压过高损坏元件。其核心作用是将多余电能转化为热能,规避硬件损坏和停机风险。选型需关注功率、阻值和封装三大参数,功率应匹配再生能量,阻值需符合驱动器要求,封装应满足散热需求。可通过动态监测母线电压或静态检测电阻阻值来判断其是否正常工作。

start_up_go的博客 384

指针形参与引用形参的区别

在主函数中定义一指针,并且将其作为函数的实参传递给子函数,并且在子函数中对指针的指向进行了重新赋值,那么当返回主函数时,在子函数中进行了操作会被“忘记”从而无效。 若在子函数中使用的是某个变量的引用,那么在子函数中对该引用进行任何更改返回主函数后,其对应的原本的变量的值也会随之改变。 int i=5; int *p1=&i;//使用指针 int &p2=i;//使用引用 究...

gulosityer的博客 2076

MetaGPT核心模块:Data Interpreter 上手实战 - 数据分析和可视化(附运行过程详解)

上篇文章我们详细解读了 DataInterpreter 的实现原理(论文),本文将开始上手实操,开始写代码用上 DataInterpreter。从最简单的例子开始,先给大家看下其运行过程,看下DataInterpreter是如何自动拆解任务,完成任务的,帮助大家构建直观认识。

同学小张的博客 375

函数的形参传递方式:值传递,指针传递,引用传递的区别

    从概念上来说一下这几种函数传参方式及区别:    1、值传递:形参是实参的拷贝,改变函数形参的值并不会影响外部实参的值,这是最常用的一种传参方法,也是最简单的一种传参方法,只需要传递参数,返回值那是return考虑的;    2、指针传递:指针传递参数从本质上来说也是值传递,它传递的是一个地址。【值传递过程中,被调函数的形参作为被调函数的局部变量来处理,即在函数内的栈中开辟内存空

水桶妹的专栏 771

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++ --- 值传递,指针传递和引用传递

在C++中,函数的形参有三种传递方式,分别为值传递,指针传递和引用传递,这三种传递方式各有不同的地方。

2301_79944784的博客 1810

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

c++之值传递、引用传递、指针传递

先来一段比较明显的代码: #include<iostream> using namespace std; //值传递 void change1(int n) { cout << "值传递--函数操作地址" << &n << endl; //显示的是拷贝的地址而不是源地址 n++; } //引...

weixin_42579072的博客 766

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

函数的形参,什么时候使用引用?什么时候使用指针?什么时候使用按值传递?...

在C++中,函数的形参,什么时候使用引用?什么时候使用指针?什么时候使用按值传递? 1 对于使用传递的值而不做修改的函数 (1)数据对象较小,如内置数据类型或小型结构体,则按值传递   void func(int ); (2)数据对象是数组,则只能使用指针,并将指针const指针   void func(const int *,int);//第二个参数为数组长度 (3)数据对象是较大...

weixin_30907523的博客 1955

函数传参问题(指针传参,值传参,引用传参):

c++ 函数传参问题(指针传参,值传参,引用传参)

weixin_40026739的博客 6304

形参、实参以及参数的传递

实参是函数调用时提供的参数的值,用于传递给函数定义中对应的形参。形参的数量和类型必须与实参的数量和类型匹配,即在函数调用时,提供的实参个数和类型要与函数定义中的形参一致。传递实参给形参时,实参的值被复制到形参中,函数内部对形参的修改不会影响实参的值。在函数调用时,实参的地址被传递给形参,函数内部可以通过解引用指针来修改实参的值。在函数调用时,实参的值被复制到形参中,函数内部对形参的修改不会影响实参的值。位置匹配:实参按照形参的顺序进行对应,位置相同的实参传递给对应的形参。

weixin_42492218的博客 2892

C++中函数的介绍:基本概述、函数参数的传递(值传递、指针传递和引用传递)、const形参、可变参数(initializer_list、省略符...)

C++中函数的介绍:基本概述、函数参数的传递(值传递、指针传递和引用传递)、const形参、可变参数(initializer_list、省略符...)

qq_42279379的博客 928

cpp函数参数传递

参数是调用函数与被调用函数之间交 换数据的通道,函数定义首部的参数称为形参,调用函数时使用的参数称为实参。实参形参一一对应。 cpp语言有三种参数传递机制:值传递,指针传递和引用传递。 1.值传递:实参的值被复制到对应的形参所标识的对象中去,成为形参的初始值,函数中语句对形参的操作与实参对象无关。 #include using namespace std; void swap(int a

回头浪子的博客 2750

【C++八股】全网最全的C++语言基础八股准备(持续更新)

构造函数,构造函数初始化对象,派生类必须知道基类函数干了什么,才能进行构造;当有虚函数时,每一个类有一个虚表,每一个对象有一个虚表指针,虚表指针在构造函数中初始化;内联函数,内联函数表示在编译阶段进行函数体的替换操作,而虚函数意味着在运行期间进行类型确定,所以内联函数不能是虚函数;静态函数,静态函数不属于对象属于类,静态成员函数没有this指针,因此静态函数设置为虚函数没有任何意义。友元函数,友元函数不属于类的成员函数,不能被继承。对于没有继承特性的函数没有虚函数的说法。普通函数。.............

qq_40145095的博客 1万+

C++ 引用变量、引用形参

语法差异:引用使用更简洁的语法,不需要使用解引用操作符来访问值。可变性:指针可以在任何时候改变指向另一个对象,而引用一旦绑定到一个对象,就不能改变指向。安全性:引用比指针更安全,因为引用保证指向一个有效的存储单元。引用是C++中强大的特性,提供了一种安全且易于使用的方式来操作其他变量。它们在函数参数传递、返回值、以及需要直接操作调用者数据时特别有用。然而,使用引用时需要谨慎,特别是作为函数返回值时,确保不会返回局部变量的引用。函数定义时,参数类型后面加上*ptr = 10;// 通过指针修改指向的值。

m0_73640344的博客 1499

C++ 值传递、指针传递、引用传递详解

转载自http://www.cnblogs.com/yanlingyin/ 而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~ 下文会通过例子详细说明哦 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。 指针传递: 形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实..

lemontreehaha的博客 202

值传递、指针传递、引用传递

函数调用时,将实参的引用传递给形参,形参是实参的别名。对形参的操作实际上就是对实参的操作。在函数内部修改实参的值,避免了数据的复制。引用传递比指针传递更安全,因为引用必须在定义时初始化,且不能为。将实参的地址传递给形参,形参是一个指针。通过指针可以直接访问和修改实参所指向的内存空间。可在函数内部修改实参的值,避免了数据复制。特点:传入的是实参的副本。函数内部对形参修改,实参不影响。

m0_66078137的博客 180

C++的三种传参方式:值传递、指针传递、引用传递(引用传递没看懂。。。)

1、值传递 我们都知道,在函数定义括号中的参数是形参,是给函数内专用的局部变量,意味着函数接收到的是实参的副本,如果形参的值在函数内部被改变,对实参是没有影响的。 #include <iostream> using namespace std; void change(int formalNum) { formalNum = 0; cout << "formalNum address: " << &formalNum << endl; }

duoyaduo的博客 1302
上一篇: 变量的声明和定义以及extern的用法
下一篇: C++new的用法
yang-彧
博客等级 码龄12年 105粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值