指针参数的传值与传址

C++指针也只能传值?指针传值与传址的实例解析   指针也存在“传值”和“传址”的操作。下面用一小段测试代码及结果来进行说明: bool GetValue(int* var) { int b = 10; var = &b; return true; } int main() { int* a = nullptr; GetValue(a); return 0; }   以上是测试代码,下面是运行结果:   在还没运行GetValue(a);函数的时候,可以看出,a是nullptr类型。   运行进去之后,可以看到GetValue 阅读详情

使用传址的方式才能使针对函数参数所做的处理在函数调用结束后仍然有效,指针参数也是如此。

有如下代码:

#include <stdio.h>

void test(char *p)
{
    printf("in test, before assigning, &p = %x, p point to \"%s\".\n", &p, p);
    p = "hello";
    printf("in test, after assigning, &p = %x, p point to \"%s\".\n", &p, p);
}

int main()
{
    char *p = "hi";

    printf("before test, &p = %x, p point to \"%s\".\n", &p, p);
    test(p);
    printf("in main, , after test, &p = %x, p point to \"%s\".\n", &p, p);

    return 0;
}

用g++编译,输出结果为:


这种方式为传值方式,只是把字符串“hi”的起始地址值存入形参自身的地址,而存储该起始地址值的地址不会被改变。

如上图输出情况所示,地址0x22ff44存储了字符串“hi”的起始地址值,地址0x22ff20在赋值前存储了字符串“hi”的起始地址,在赋值后存储了字符串“hello”的起始地址。

地址0x22ff44存储的值并没有被改变。

若要将函数的处理在调用结束后仍然有效,则需使用传址的方式,函数参数需使用指向指向指针的指针类型,代码如下:

#include <stdio.h>

void test(char **p)
{
    printf("in test, before assigning, p = %x, *p point to \"%s\".\n", p, *p);
    *p = "hello";
    printf("in test, after assigning, p = %x, *p point to \"%s\".\n", p, *p);
}

int main()
{
    char *p = "hi";

    printf("before test, &p = %x, p point to \"%s\".\n", &p, p);
    test(&p);
    printf("in main, , after test, &p = %x, p point to \"%s\".\n", &p, p);

    return 0;
}
用g++编译,输出结果为:


使用这种方式就可以在函数中改变地址0x22ff44存储的值了,即将原来存储的字符串“hi”的起始地址值改为字符串“hello”的起始地址值。


CentOS 7下Ollama+Dify+DeepSeek离线部署全攻略(附模型迁移技巧) 本文详细介绍了在CentOS 7无网环境下,从零开始离线部署Ollama、DeepSeek模型与Dify平台的完整实战攻略。内容涵盖基础环境规划、Ollama服务安装、模型文件迁移技巧、Docker引擎离线部署,以及Dify平台与本地Ollama服务的集成配置,为企业内网构建安全、可控的AI应用提供了一套经过验证的解决方案。 阅读详情

相关推荐

数据中心GPU芯片性能参数速查表(Nvidia+国产算力卡)

本文提供了一份数据中心GPU芯片性能参数速查表,涵盖Nvidia与国产算力卡两大阵营。文章详细解读了算力、显存、互连技术及功耗等关键性能指标,并对比了A100、H100、昇腾910B等主流型号,旨在帮助用户根据AI训练、推理等实际场景,做出高效的硬件选型与成本评估决策。

a0b1c2d3的专栏 835

指针(址)的传递

1.指针(指针变量) 一个变量的地址称为该变量的指针,地址是指向该变量单元的。 2.指针定义 &是取地址运算符; 是指针运算符,也叫间接访问运算符 int p=&a的解释:将变量a的地址取出来&a,p指针是存放地址的,把&a赋值给p,int是保持与变量a同一类型的。 3.指针的值传递和址传递 我们知道实参传给形参的时候只是一份临时拷贝 真正使用址传递才能修改实参的数值: 定义常量temp,并和p(就是a,b的值)相联系起来 除上述表达外,是否能用以下两种方式来传址呢?

qq_40599849的博客 1754

图像去雾常见数据集

上述数据集涵盖了室内、室外、真实和合成等多种场景,可以满足不同研究需求。在选择数据集时,建议根据具体任务的应用场景和目标选择合适的数据集,例如真实雾天图像适合模型的实际应用验证,而合成数据则适合模型的快速迭代和训练。希望本文能为从事图像去雾研究的朋友提供一些帮助!

m0_68604571的博客 6334

引用&指针、传值&传引用&传址的区别

引用 概念(贴标签式) 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间 类型&amp;amp;amp; 引用变量名(对象名) = 引用实体; 使用场景 1.作为函数形参 2.作为函数返回值 注意事项 a. 引用在定义时必须初始化 b. 一个变量可以有多个引...

王洋的博客 1825

高速DAC时钟与配置实战:DAC5681Z硬件设计与寄存器编程详解

在高速数据转换系统中,时钟信号是决定系统性能的核心要素,其稳定性和纯净度直接影响数模转换器(DAC)的输出频谱纯度与动态范围。时钟电路的设计原理涉及信号完整性、阻抗匹配与直流偏置,而内部锁相环(PLL)和延迟锁相环(DLL)的配置则是实现精确时序控制的关键技术。这些技术的价值在于,它们共同保障了高速通信、雷达和任意波形生成等应用对信号实时性与精度的严苛要求。本文聚焦于德州仪器(TI)的DAC5681Z,深入解析其外部时钟输入电路的硬件设计要点,包括端接电阻的计算与选型,并详细拆解通过串行外设接口(SPI)对

weixin_30342363的博客 186

Windows 下 Codex MCP 服务配置全攻略:从环境搭建到实战避坑

本文详细介绍了在Windows系统下配置Codex MCP服务的完整流程与实战避坑指南。内容涵盖从Node.js环境搭建、Codex CLI安装,到核心配置文件config.toml的编写与解析,并重点解决了Windows平台特有的环境变量设置、MCP服务启动命令适配等关键难点,帮助开发者顺利完成从环境准备到编辑器插件连接的整个配置过程。

weixin_28826545的博客 2068

指针--传址和传值

在我们之前的学习中,我们学到了指针等相关知识,那么传址和传值是什么意思呢?顾名思义,传值是将变量传给函数,传址就是把变量的地址传给函数我们先来复习一下前面的知识,当然,详情可以通过下面链接学习。

2301_80190473的博客 654

Android 16强制横竖屏设置

但开发者端的响应却相对滞后,特别是中小型开发团队受限于大屏设备市场渗透率(截至2023年Q2,Android平板全球激活量约1.2亿台,不足手机设备5%)及开发成本考量,适配优先级普遍偏低。这种适配滞后已形成恶性循环——开发者因设备基数不足降低适配意愿,而用户体验缺陷又反向抑制大屏设备的市场接受度。要破解这一困局,既需要Google持续优化Jetpack Compose等现代化UI工具链,更需要建立开发者激励体系,通过应用商店流量倾斜、开发补贴等经济手段提升适配投入产出比。再不肯好好适配大屏设备?

xiangzhihong8的专栏 977

通俗易懂:指针(二)传值调用与传址调用说明,指针和数组的关系,特殊指针类型的介绍:指针数组和数组指针,函数指针和函数指针数组以及字符指针

基于指针的方面,介绍了传值调用与传址调用,指针与数组,字符指针的基本内容和通俗易懂的见解了指针数组、数组指针、函数指针、函数指针数组的定义用法和易混点

fouryears_23417的博客 1370

AFSim2.9.0学习笔记 —— 2、AFSim的Wizard软件概述(ArkSIM集成开发环境 (IDE))

AFSim2.9.0学习笔记 —— 2、AFSim的Wizard软件详述(ArkSIM集成开发环境 (IDE))

918

OP-TEE虚拟化支持详解

OP-TEE虚拟化支持解析 OP-TEE提供实验性虚拟化方案,支持多虚拟机共享安全执行环境。核心特性包括: 配置选项:CFG_VIRTUALIZATION启用虚拟化,CFG_VIRT_GUEST_COUNT限制虚拟机数量并分配均等内存资源; Hypervisor协作:需实现虚拟机生命周期通知、SMC参数转换、内存固定等关键协议; 当前限制:仅支持Armv8架构,硬件资源共享有限,采用静态内存配额机制; 架构实现:通过MMU分区切换和扩展内存分配器实现多租户隔离,Nexus核心层管理虚拟机上下文。该方案适用于

Linux内核架构师 109

C++学习 【7 指针 值传递和地址传递】

值传递、地址传递

weixin_47725177的博客 1298

Android12 适配 usb 触屏

在 Android 系统中,输入设备 IDC(Input Device Configuration)设备描述文件(.idc)是用于配置和定义输入设备行为和属性的文本文件。 该文件通常在`/system/usr/idc/` 或 `/vendor/usr/idc/`,具体位置因芯片厂商SDK而异。一般情况此类文件是预置到系统,开发者 root 权限才能修改这些文件。输入设备 IDC 设备描述文件在 Android 系统中起到了识别、配置、映射和定制输入设备的作用,使得系统能够准确解析和处理各种输入设备的事件,提

weixin_35723192的博客 1231

传值和传址,指针函数,函数指针,函数指针作为参数,函数指针作为返回值。

有时候,我们定义的函数需要接收用户传入的数据,那么就需要使用到函数的参数。 函数参数的数量可以有多个, 返回值一般表示函数计算后的数值,也可以表示执行结果。 主函数传入的参数称为实参,传递到函数体的参数叫做形参。 //传递到形参后就可以直接在函数体当中使用已经定义过的形参的数据。 函数的设计应该遵从一个函数实现一个功能的原则, 传入的参数让函数实现更为丰富的功能 类型名就是指定函数的...

靡不有初,鲜克有终。 649

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

指针简介(2)——参数传值和参数传址

声明: 本文是阅读周立功老师的程序设计与数据结构后所写,很多内容其实是书中的内容,所以如果您想了解更多这方面的知识,您可以阅读这本书。 在调用函数时我们通常会向调用的函数传递参数,而这里的参数有两种方式传递进入函数,一种是将实参的变量名直接传递给调用函数,这种被称为是参数传值,而另一种是将实参的地址传递给调用函数,这种方式被称为是参数传址。 参数传值: ...

静祥阁 822

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【C语言】指针作为参数(传值调用vs传址调用)

在前面讲了那些指针相关的内容后,是时候探讨一下指针有什么作用了。在C语言中,指针有多种各不相同的应用,在本篇文章中,我们探讨一下指针作为函数参数的作用(对比传值与传址两种不同函数调用方式)。传址调用,可以让函数和主调函数之间建立真正的联系,在函数中可以修改主调函数中的变量。所以我们可以知道,当我们只是需要主调函数中的变量值来实现计算,可以采用传值调用。举个例子:而如果需要修改主调函数中的变量的值,就需要传址调用了。到此,本文就结束了,希望大家阅读愉快^_^

Octopus2077的博客 947

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

13 C语言基础--------栈帧、传值、传址、数组做函数参数、指针做函数返回值

#include <stdio.h> /* 栈 帧: 当函数调用时,系统会在 stack 空间上申请一块内存区域,用来供函数调用,主要存放 形参 和 局部变量(定义在函数内部)。 当函数调用结束,这块内存区域自动被释放(消失)。 传值和传址: 传值:函数调用期间,实参将自己的值,拷贝一份给形参。 传址:函数调用期间,实参将地址值,拷贝一份给形参。 【重点】 (地址值 --》 在swap函数栈帧内部,修改了main函数栈帧内部的局部变量值) */ int swap(int m, in.

a12345678900l的博客 226

【C++】如何理解函数调用中的传值和传址

如何理解函数调用中的传值和传址

师兄怎么办 601

传值、传址、传引用

传值、传址、传引用

qq_48917474的博客 272

C/C++中参数传递有两种方式,传值或传地址(传引用)

C/C++中参数传递有两种方式,传值或传地址(传引用)

~~~jesse的专栏 6352

传值类型_深入理解被调函数与主调函数之间的传值、传址、值返回、址返回

函数的英文是function,有功能的意思,函数的作用在于合理分配功能,增强程序的可读性。合理分解功能,降低程序的复杂性。隐藏函数内部的数据和实现,尽可能将问题局限于函数本身。函数可以理解为一种功能抽象,一些语句的封装或聚合。由函数的各部分形成一个数据描述、输入、处理、输出的结构。函数调用时都会在栈上开辟自己的内存空间(栈帧),用于存放返回地址、实参值、函数体内的局部变量。实参和形参的结合相当于用...

weixin_42422362的博客 798

传值,传址,传引用(数组,对象)

传参方式

qq_45809243的博客 1537

C++中的传值与传址

在指针的传递中,也涉及到传值与传址的问题。下面通过一个函数进行说明。 代码如下: bool openBinary(uchar* buffer) { long lSize = 1024; buffer = (uchar*)malloc(sizeof(uchar)*lSize); return true; }int main(int agrc, char *a...

weixin_30323961的博客 108

php传值传址,传值和传址的区别是什么

传值和传址的区别:1、在传值中函数参数压栈的是参数的副本,任何的修改是在副本上作用,没有作用在原来的变量上;2、传址中压栈的是指针变量的副本,当你对指针解指针操作时,其值是指向原来的那个变量。本文操作环境:Windows7系统,Dell G3电脑。传值和传址的区别:1、在传值中函数参数压栈的是参数的副本,任何的修改是在副本上作用,没有作用在原来的变量上。2、传址中压栈的是指针变量的副本,当你对指针...

weixin_35812176的博客 403

Java中向方法传参数只有传值一种!

    本文是个总结,欢迎讨论!    在Java中,参数的传递严格意义上讲都是传值的,只不过简单很容易分清楚。而对于对象,有些复杂。    首先,在Java中是先声明一个类的变量。然后,用类生成一个类的实例,也就是在内存中的类的实例区域,最后把这个区域的指针赋给类的这个变量。注意,变量中存的是指向对象的指针。    若是按传址传参数,是要改变这个对象变量所指的内存对象区域,也就是要在

Ardor Leo's Blog 1767

[Essential C++] 传值(pass by value)与传址(pass by reference)

在定义或调用一个函数时,用两种参数传递方式,传值(pass by value)与传址(pass by reference)。使用一个冒泡排序的程序作为例子进行理解。 传值(pass by value) 传值是将传给函数的对象复制一份,原对象和复制品之间没有任何关联。 当我们调用一个函数时,会在内存中建立起一块特殊的区域,称为“程序栈(progam stack)”。这块特殊区域提供了每个函数参数的存储空间,它也提供函数所定义的每个对象的内存空间——这些对象叫做local object(局部对象)。一旦函数完成

weixin_45998931的博客 351
上一篇: Chapter 02 Looping and counting
下一篇: Chapter 03 Working with batches of data
Choes
博客等级 码龄17年 8粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值