【C++】指针数组/数组指针,指针函数/函数指针,指针常量/常量指针

C/C++中的指针(*),引用(&),取地址(&) 大一学C++的时候最怕的肯定就是指针方面的知识了,相信大家也是有这样的体会,但是懵归懵,现在我们得弄清楚一下里面的东西,但想要理解的明明白白,还是需要下一些功夫进去的 指针的形象概念: 假设第一个代表指针变量ptr,第二个代表整形变量h 第一个方框就是指针变量,指针变量存的内容是指向的变量的地址,所以我们会有如下指针: int * ptr=&a; 然后我们使用的时候,*ptr... 阅读详情

导语:今天学习了一下指针函数和函数指针,联想到之前的指针数组,遂做个笔记简单记录一下二者的区别。

一. 指针数组与数组指针

  • 指针数组:一个数组里面放的全是指针
  • 数组指针:有一个指针,指向了数组的首地址
int *p[10];    //指针数组
int (*p)[10];  //数组指针

二. 指针函数与函数指针

  • 指针函数:函数的返回值类型是指针
  • 函数指针:有一个指针,其指向了一个函数地址
int* add(int a,int b){}    	//指针函数
int (*p)(int ,int);			//函数指针
p = add;					//赋值
*p(1,2)						//调用    

注:
① 函数的地址即函数名
② 函数指针本质上是一个指针,其指向该函数地址
③ 指针函数本质上是一个函数,其返回值类型为指针

三. 指针常量与常量指针

  • 指针常量:即*在const前,指针的指向不可以更改,但指针里的值可以更改
  • 常量指针:const在*前,指针里的值可以更改,但指向不可以更改
int* const p;   		//指针常量
const int *p;			//常量指针 
int const *p;			//常量指针 
Apk脱壳圣战之---脱掉“梆梆加固”的保护壳 一、前言 现如今Android用户的安全意识不是很强,又有一些恶意开发者利用应用的名字吸引眼球,包装一个恶意锁机收费的应用,在用户被骗的安装应用之后,立马手机锁机,需要付费方可解锁。这样的恶意软件是非常让人痛恨的。所以本文就用一个案例来分析如何破解这类应用,获取解锁密码,让被骗的用户可以找回爽快! 二、分析软件锁机原理 本文用的是一款叫做:安卓性能激活.apk,关于样本apk文件后面会... 阅读详情

相关推荐

向量库深度解析:选型、索引原理与生产实践

本文系统解析五大主流向量库(pgvector、Milvus、Weaviate、ChromaDB、Faiss)的定位、优缺点与适用场景,深入拆解FLAT、IVF、HNSW等核心索引原理,并重点分析Milvus的Compaction机制。针对数据治理场景,提供精准选型建议:中小规模优先pgvector或Weaviate,超大规模选择Milvus,开发测试推荐ChromaDB。核心索引推荐HNSW,兼顾检索速度与召回率。全文从理论到实践,为开发者提供清晰的向量库选型逻辑与生产落地指南。

a123147abc的博客 360

C++——常量指针和指针常量、函数指针和指针函数、指针数组和数组指针

一、常量指针和指针常量

weixin_51547017的博客 952

UE5 Metahuman与Blender手动绑定:ARKit面部动画实战对比

面部动画是角色动画领域的核心技术,其核心原理在于通过驱动面部骨骼或混合形状来模拟真实肌肉运动,从而赋予数字角色生命力。这项技术的价值在于极大地提升了虚拟角色的表现力与沉浸感,广泛应用于游戏开发、影视制作、虚拟现实和实时交互应用。在技术实现路径上,开发者常面临工业化集成方案与高度自定义方案的选择。本文聚焦于使用行业标准的ARKit 52个面部混合形状数据,深度对比了虚幻引擎Metahuman的工业化流程与Blender手动绑定方案在视觉保真度、工作流效率、性能开销和扩展性上的差异,为不同项目规模与技术需求的团

weixin_33901926的博客 449

C++ 常量指针常量,指针常量和常量指针,以及数组和指针的关系

c++ 指针 常量 以及数组和指针的关系

m0_57367734的博客 421

Docker(八):Docker Compose(容器编排) 管理多容器应用—实战案例演示

🟢 Docker(八):Docker Compose(容器编排) 管理多容器应用—实战案例演示

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6万+

基于YOLOv11的建筑图纸物体检测系统设计与实现

包含多种建筑平面图,标注了墙体、门窗等元素:CAD格式的建筑图纸数据集:专门针对建筑元素的标注数据集自定义数据集:使用LabelImg等工具自行标注的建筑图纸本文以FloorPlanDataset为基础,结合部分自定义标注数据构建混合数据集。wall (墙体)door (门)window (窗)stair (楼梯)furniture (家具)text (文字标注)dimension (尺寸标注)column (柱子)

YOLO 536

C++ 01常量指针和指针常量、数组指针和指针数组、引用和指针,结构体数组和结构体指针,常量引用

1. 常量指针、指针常量 int main(){ // 1,常量指针,const修饰指针,指针指向的值不可以改 int a = 10; int b = 10; const int * p = &a; // *p = 20; // 错位 // p = &b; // 正确 // 2,指针常量,const修饰常量,指针的指向不能变 int * const p2 = &a; // 指针常量,*p不能改 // *p2 = 100; // 正确 // p2 = .

一千零一夜的博客 520

使用安卓的IMU数据进行 行人航位推算(PDR)推算步长 附python 代码

加速度计数据、陀螺仪数据、重力传感器数据、姿态仰角数据。数据分析与定位轨迹生成主要使用Python离线完成。示意图。

三维点云技术探索 1912

C++常量指针与指针常量_数组指针与指针数组_函数指针与指针函数

C++常量指针与指针常量_数组指针与指针数组_函数指针与指针函数 百度文库链接,讲的很详细: https://wenku.baidu.com/view/756b54ca6529647d272852a5.html

李昊的博客 432

手把手实现STM32+ESP8266+原子云服务器+手机APP应用——第三节-编写STM32程序实现STM32+ESP8266+原子云服务器+手机APP互相通信—远程数据传输及控制灯

接上一篇,本节使用原子云服务器。编写STM32程序实现STM32+ESP8266+原子云服务器+手机APP互相通信—远程数据传输及控制灯。使用的硬件包括:STM32F103(任意其他款系列也可以的)、正点原子ATK-ESP8266、LED灯。实现编写STM32程序代码来传输单片机数据到原子云服务器和手机APP进行显示,同时通过手机APP和原子云服务器可以远程控制单片机,例如本节实现远程点/灭灯,以此可以扩展开发更多的功能。本专栏本系列的相关文章可查看下面链接:

嵌入式阿齐Archie 8409

RK3588开发笔记-ISP模块参数调试

本文详细介绍了基于RK3588平台的ISP模块参数调试流程。主要内容包括:硬件准备(RK3588板卡、IMX415摄像头等)、软件环境搭建(Ubuntu系统、RKISP_Tuner工具)、IMX415摄像头基础使用验证、RKISP2.x Tuner工具的使用方法(新建/加载IQ参数文件、Sensor配置、Raw图采集)以及最终IQ文件的部署。文章重点强调了基础标定的重要性,建议开发者分场景调试并参考官方文档,通过合理配置ISP参数来优化图像质量。该调试流程适用于RK3588平台的图像采集类项目开发。

flypig has a dream! 834

C++ 指针常量和常量指针

首先在C++目前我看到的类型声明方式,该变量的类型都是由最后几个字来确定,前面是定语,修饰词。(有其他不同的欢迎指出,共同学习) 比如: 指针数组:是数组,数组里存的是指针。 数组指针:是指针,指针指向数组。 所以指针常量:首先是常量,然后是一个指针,即是该指针是一个常量,指针的值,即指向的地址不会变。 常量指针:首先是指针,指针指向的是常量,该指针所指向的值是个常量。 然后对于类型 const,除了const在类型声明的最左侧的情况,const都修饰它左边的类型,当它在最左边时,修饰右边最近的类型。

weixin_45120085的博客 790

深度学习工具包 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")

c/c++概念辨析-指针常量&常量指针、指针函数&函数指针、指针数组&数组指针

在上面的例子中,我们定义了一个函数指针p,它指向一个参数为两个int类型的函数,并返回一个int类型的值。忽略int,看const右侧紧跟着的是指针p还是常内容 *p, 是指针,那就侧重点在描述指针值不可变,可类比 “字符串常量”,即为 指针常量;是常内容*p,那就是侧重点描述指向内存内容不可变,记忆时可以把*p 替换为常内容,那就是常量(内容)指针)数组指针又称为行指针,它指向的是一个数组,对于一个二维数组,它指向的就是一行行一维数组。可简单理解为,XX类型的指针,也可理解为指向XX的指针。

迷途 767

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

彻底理解——指针常量和常量指针、指向常量的常指针

前言   在汉语中,定语一般都放在中心词的前面,像C语言和C++语言这种技术性语言,更是如此。   所以定语重要还是中心词重要,肯定是中心词重要。   如:美丽的女孩 美丽的是定语 女孩是中心词   女孩肯定是重要,是本质。   同理,我们先不讲技术,先从字面意思来理解:指针常量、常量指针、函数指针、指针函数、数组指针、指针数组 指针常量 指针是定语,常量是中心词,所以指针常量本质是一个常量 常量指针 常量是定语,指针是中心词,所以常量指针本质是一个指针 函数指针 本质上是一个指针,那就

zhf的博客 8012

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C语言指针注意实现(3)之数组指针和函数指针

C/C++会把常量字符串存储到单独的⼀个内存区域, 当⼏个指针指向同⼀个字符串的时候,他们实际会指向同⼀块内存,也即内容相同的常量字符串只会保存一份。根据数组名是数组首元素的地址规则,二维数组的数组名就是第一行的地址,是一维数组的地址。说明p是⼀个指针变量,然后指向的是⼀个⼤⼩为10个整型的数组。⼆维数组传参本质上也是传递了地址,传递的是第⼀行这个⼀维数组的地址,那么形参也是可以写成指针形式的。3.数组指针变量,数组指针变量也是指针变量,存放的是数组的地址,是能够指向数组的指针变量。

qq_45755259的博客 378

C/C++指针与const、数组、函数

C/C++中指针是灵活多变,可以指指向任意地址,但是地址有可以存储任意对象,因此指针与其它对象的定义结合在一起,功能和作用是不同的,很容易混淆,尤其是const、数组和函数。  下面分别介绍一下const、数组、函数与指针一起时在如何使用,有点像绕口令。   1、const与指针 const用来修饰不变量,const与指针结合在一起,有多种称谓和定义,例如: 常量指针、指针常量(指向常量的

zjd358的专栏 2020

关于指针(指针常量/常量指针、指针数组/数组指针、指针函数/函数指针)

指针常量(常指针):char * const p const位于星号右侧,const修饰指针本身,即指针本身是常量,指针指向地址不可改变,但所指地址变量值可以改变。 常量指针(指向常变量的指针):const char *p cosnt位于星号左边,const修饰指针所指向的变量,即指针本身指向的地址可以改变,但它所指的内容不可以被修改。 指针函数:函数的返回值是一个指针类型。 函数

TS1130的专栏 829

C语言基础指针*

*****

TT_run的博客 3057

指针常量、常量指针;指针数组、数组指针;指针函数、函数指针

在C/C++中,关于指针常量、常量指针;指针数组、数组指针;指针函数、函数指针的概念很容易混淆,今天来整理一下,用作参考。1、指针常量、常量指针从中文的概念来理解,指针常量显然是一个常量,该常量的值为指针,定义为:int * const p;既然是常量,定义时一定要初始化,而且它的值一定是不可以改变的,所以说指针常量p不可以改变,p的值是一个地址,当指针一开始指向a的地址,后来换成b的地址时,是不允

CongliYin的博客 944

指针(3)

但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。二维数组其实可以看做是每个元素是一维数组的数组,也就是二维数组的每个元素是一个一维数组。解释:p先和*结合,说明p是一个指针变量,然后指针指向的是一个大小为10个整型的数组。那就意味着二维数组传参本质上也是传递了地址,传递的是第一行这个一维数组的地址。数组指针变量是存放的是数组的地址(&数组名),能够指向数组的指针变量。typedef 是用来类型重命名的,可以将复杂的类型,简单化。根据上面的例子,第一行的一维数组的类型就是。

2301_80809929的博客 356

指针(数组、常量、函数)

指针数组、指针常量、指针函数指针是C/C++特有的结构类型,也是最难理解的部分,有很多容易混淆的相关术语,rt。指针本身是个数据类型,指向特定数据。我们可以这样理解:指针对应与一个仪表盘的指针,其指向的地址就是表盘上数据。 指针数组与数组指针 指针常量与常量指针 指针函数与函数指针 记忆方法有很多,不理解的时候就死记呗,然后用的时候慢慢领悟。上面上个记起来其实很简单,怎么念的通就是怎么个意思,如下:

leo 486

C语言:字符指针 数组指针 函数指针

字符指针字符指针。

2301_80709869的博客 555

指针相关知识(3)

要知道还有什么表达方式我们需要深度理解一下二维数组,我们可以把二维数组看成一维数组里存放了几个一维数组int arr[3][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}},并且二维数组首元素地址就是第一行一维数组的地址,根据上面的解释,一维数组元素类型是int [5],那么第一行一维数组地址的类型就是int (*)[5],所以本质上二维数组传参也是传递了地址,所以我们也可以用数组指针表示。可以看出来函数是有地址的,并且函数名就是函数的地址,可以直接函数名也可以&函数名。

wangzhezhifwng的博客 987

c++ primer plus阅读笔记5---指针const函数指针数组

1.指针和const指向常量的指针:int age=39; const int *pt=&age; //这句话的意思是相对指针pt来说,age的值是常量,例如下边这种操作就是非法操作 *pt+=1; //非法操作,但是age不是常量,可以使用通过age修改值 *pt=20 //非法操作 age=20 //合法操作指针的值本身是常量:int *const p=&age; //指针常量,指针指

darmao的博客 424

C语言-----指针的一些思考

目录 前言 一、指针是什么? 二、一些题目所带来的思考 1.指针常量与常量指针 2.关于“++”的指针问题 3.定义函数(有关指针) 4.定义数组指针与函数指针 5.指针与数组 6.指针赋值 7.指针取出某个值 8.二级指针 9.指针-----输出 总结 前言 指针是一个比较困难的部分(对我来说),但经过一段时间的学习有了一些思考,希望和大家多多交流 提示:以下是本篇文章正文内容,下面案例可供参考 一、指针是什么? 指针也就是内存地址,指针变量是用来...

weixin_62436283的博客 1210

(新手必看)指针的八种容易混淆变量

函数指针:是一个指针变量,它存储函数的地址,允许我们通过这个指针来调用函数。指针函数:是一个返回指针值的函数,这个返回值通常是一个变量的地址。两者之间的主要区别在于它们的行为和用途。函数指针主要用于调用函数,而指针函数主要用于返回地址值。在实际编程中,根据需求选择合适的工具非常重要。

m0_73551293的博客 914
上一篇: 【Word】关于Word文档写作中遇到的一些问题
下一篇: 【Golang】关于从切片中删除某个元素时会覆盖底层数组的说明
StopTheWorld丶
博客等级 码龄7年 1851粉丝 68原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值