黑马程序员---学习笔记2:函数

黑马程序员14套经典IT教程+面试宝典 很多同学对互联网比较感兴趣 ,奈何苦恼不知道如何入门。今天免费给大家分享一波,黑马程序员14套经典IT教程+程序员面试宝典!涉及Java、前端、Python、大数据、软件测试、UI设计、新媒体短视频等。 阅读详情

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-


函数:功能相对独立的代码段;
C语言程序就是有很多功能相对独立的代码段组成的。
C语言是面向过程的语言,最大的标志是它是由一个个函数组成的,而面向对象的标志是由一个个对象(类)组成的。

函数分为:库函数(系统定义的)和用户定义的函数
用户定义函数:需要用户自己编写的函数。对于这种函数,不仅用户需要定义函数本身,还需要在主调函数中加入对被调函数的类型声明,这样才能使用。

有返回值函数:表示函数执行完后,向调用者返回一个返回值。
无返回值函数:只是完成特定功能,没有返回值。类型是void 空类型。

自定义函数的书写格式:
函数定义到使用分三步:1、声明 2、定义函数 3、调用函数

格式: 返回值类型 函数名称(参数列表){ 函数体; }

自定义函数分类:
无参无返回值
无参有返回值
有参无返回值
有参有返回值

函数的参数:
形式参数:定义函数的时候,函数名后面小括号里的参数就是形参。形参是什么样的类型,实参就必须是什么样的类型。
注意:1)形参定义后并不会马上分配存储空间。在函数调用的时候才会正真的分配存储空间。
2)如果有多个参数,需要用逗号分隔。
3)形参的类型可以不相同。
4)函数中不可以定义和形参名相同的变量,这等同于同意变量名重复定义。

实际参数:在函数调用的时候,小括号中的参数。
实参可以是常量,变量,表达式,函数,但是在函数调用时它们必须有确定的值

实参必须和形参在类型,数量,顺序上保持严格的一致否则会发生类型不匹配的问题。

(系统调用main函数后,main函数的形参也会被分配存储空间,int argc,char* argv[])
参数传递过程:

系统调用main函数后,给argc,argv[],d都分配的存储空间,在给d赋值时调用了sum(),此时,给x,y分配了存储空间,分别传入了10和5.sum函数计算后返回15,赋值给d,然后,sum函数结束,存储空间释放。此时x,y消失,d的值为15.

函数的返回值:函数被调用之后,执行函数体中的程序段所取得的并返回给主调用函数的值。

返回值的注意事项:1)必须要用到关键字return
2)return 后面可以跟常量/变量/表达式
3)return 后面的值可以加括号,也可以不加括号,结果一样
4)如果return的值和函数定义的值的类型不一致,以函数的返回值类型为准。
5)函数的返回值类型为int,可以省略(尽量不要省略,会有警告)。

函数的声明:在函数调用之前对,函数的说明。(类似,变量使用之前要进行说明一样)

函数声明的作用:告诉编译器这个函数已经存在,告诉编译器这个函数的返回值类型。以便主调函数处理被调函数的返回的数据。

函数声明的注意事项:1)函数的返回值为int型,可以不用声明。(会有警告,最好声明。)
2)被调函数写在主调函数之前,此时可以不用声明。
3)函数的声明可以写在主调函数之中,也可以写在main函数之外,做全局声明,也可以做间接声明。

函数的调用:函数在调用时才可以使用,实参可以是常量,变量,也可以是表达式

调用的注意事项:1)可以当作函数表达式的一部分
2)函数调用可以当作另外的函数的参数。
3)函数可以嵌套调用
4)函数名不能和变量名同名

递归函数调用:(递归函数很耗资源,能不用尽量不用)
一个函数在它的函数体内对它自身进行调用,这是递归调用,该函数称为递归函数。
递归函数注意:1)主调函数就是被调函数
2)在递归函数中应该存在能够让递归结束的条件。

递归函数的调用流程:当递归函数使用时,会使用到内存栈(先进后出),递归函数调用后,开始进入内存栈底层,此时内存为它分配存储空间,当函数再次递归调用自身,新的递归函数再次进入递归栈,分配新的内存空间,这种情况一直会持续到递归结束,这些内存在这个过程中会被一直占用,直到递归到结束,此时,最晚分配内存的递归函数,获得自己的数据后传递给前一个递归函数,然后释放自身内存。内存这样依次释放,直到最先进入递归栈的函数获得自己的数据,完成计算,并返回主调用函数值时,它的内存才被释放。
从整个过程来看,最先进入内存栈的函数占用内存时间最长,假如多次递归后仍然到不了递归结束条件,内存会被不断连续分配造成内存不足。

黑马C++学习笔记 这是我听了黑马的C++视频所记得笔记,很全啊,其中包括各种案例小程序 立即下载

相关推荐

SAP PCE私有云MM02修改物料主数据基本单位报错

当前发现只有改为AAAADL(无量纲)单位时会报错,其他的正常。一开始以为配置的ISO码换算有问题,对配置排查后,排除配置问题。最后发现是PCE当前版本的原因,需要打上NOTE。SAP PCE私有云在没有库存和业务单据的情况下,MM02修改物料主数据基本单位报错“EA CPZP MK000000000000:PCS 不可转换为”,详见截图。点击【显示错误】,提示EA CPZP MK000000000000:PCS 不可转换为。从SAP FOR ME下载NOTE 3531359,链接。

dingqing86的专栏 522

黑马程序员C++学习笔记

1.关于if语句使用的逻辑问题【未解决】 /*这里可以书写多行注释 版权:copyright*/ #include<iostream> using namespace std; int main() { //选择结构 单行if语句 float score = 0; cout << "请输入你的分数" << endl; ...

jinxiqinghuan的博客 1112

从波形到代码:手把手调试GaN图腾柱PFC的过零点切换与软启动策略

本文详细解析了GaN图腾柱无桥Boost PFC电路在过零点切换与软启动策略中的调试方法。通过波形分析、代码实现和寄存器配置,提供了解决误开通、震荡波形等问题的实用方案,帮助工程师优化电源设计效率与可靠性。

weixin_30831529的博客 424

黑马程序员SpringBoot2全套教程学习笔记

spring-boot-study 介绍 代码仓库地址:https://gitee.com/CandyWall/spring-boot-study 跟着黑马程序员spring boot教程做的学习笔记,本笔记跟视频内容的项目名称和代码略有不同,都是基于我自己的考量,代码都已经过运行验证过的,仅供参考。 视频教程地址:https://www.bilibili.com/video/BV15b4y1a7yG 注:四级标题和部分5级标题是使用子项目名称命名的,和我代码仓库的项目是一一对应的。 每个子项目对应的视频链

糖果墙的博客 2万+

雷达信号处理DDC数字下变频

由于接收到的雷达信号频率较高,不能对其进行直接采样并数据处理,所以需要对雷达信号进行预处理,在降低其采样率的同时,将其由中频降低到低频,然后对输出的基带信号进行后续的解析,以便于获取雷达信号的特征参数。 本文采用数字正交下变频,将单通道信号转化为正交双通道信号,数字下变频(DDC)的原型为模拟下变频,通过对窄带雷达信号或单频信号进行数字混频,然后对信号进行正交采样,提取 I、Q 两路正交分量,最后通过滤波去除信号中的高频分量,将信号由中高频搬移至低频。 模拟下变频的系统框图如下: 其数学推导.

qq_44033461的博客 5233

ros_gz_bridge__镜像__readme

Run。

1113

黑马程序员Python从入门到精通代码汇总

本帖子是本人于2023年暑假期间在B站观看《黑马程序员python教程,8天python从入门到精通》通过基于web的Jupyternotebook实时编译交互环境整理的Python学习笔记,大家可以根据黑马原视频对照学习。

Mickey的博客 7479

基于STM32设计的数字电子秤

当前项目是采用采用STM32+称重模块+OLED实现了简单的电子秤项目,称重模块上采用24位的ADC芯片,精度较高。实现了称重,校准、去皮等功能。

1万+

《黑马程序员python教程,8天python从入门到精通,学python看这套就够了》学习笔记总目录

本文是对《黑马程序员python教程,8天python从入门到精通,学python看这套就够了》所有知识点的笔记进行总结分类。 学习时总结的目录笔记以及思维导图和实训,将在后续更新。

放下华子我只抽RuiKe5的博客 8842

基于UC3842的反激电源的全面深入解析与MATLAB仿真

内置电流检测,可实现电流模式控制,提高系统的动态响应性。多种保护功能,如欠压锁定、过温保护、短路保护等,确保系统的安全可靠运行。宽工作电压范围,适应不同的电源设计需求。简单的外部元件配置,易于实现。UC3842的典型应用包括开关电源、DC-DC转换器和反激式电源等,其稳定性和可靠性在实际应用中得到了广泛验证。

qq_38334677的博客 1087

AI大模型:(三)3.2 Spring AI实现Agent

SpringAI实现了流式对话功能,通过与Ollama模型集成完成前后端交互,当前版本存在thinking信息丢失问题。系统支持两种工具注册方式(方法注解和函数式),并内置时间工具类展示外部工具调用能力。记忆功能提供多种存储方案(内存、JDBC、NoSQL等),实现跨对话轮次的上下文保持。MCP协议集成方面,服务端实现计算和业务查询工具,客户端支持12306及自定义业务系统接入。完整演示了流式对话、工具调用与记忆功能的综合应用。该实践构建了具备复杂交互能力的AI系统,同时指出生产环境需关注的安全与优化问题。

haylee的专栏 1010

黑马程序员和尚硅谷前端Javascript学习笔记

元素对象.addEventListener('事件类型',要执行的函数)事件监听三要素:事件源:那个dom元素被事件触发了,要获取dom元素事件类型:用什么方式出发,比如鼠标单击clik、鼠标经过mouseover、文本框输入内容等事件调用的函数(事件处理程序):要做什么事alert('你好呀!')})事件监听的版本扩展:事件监听发展史:DOM L0事件源.on事件 = function(){}按钮DOM L1事件源.addEventListener(事件, 事件处理函数)

m0_74823044的博客 1412

【运动规划算法项目实战】如何使用Pure Pursuit算法进行路径跟踪(附ROS C++代码)

在自动驾驶和机器人导航领域,路径跟踪是一项关键技术,它使车辆或机器人能够按照预定的路径规划进行移动。路径跟踪算法的选择对于系统性能和安全性至关重要。本文将介绍一种常用且有效的路径跟踪算法——Pure Pursuit算法。我们将详细讨论Pure Pursuit算法的原理、实现步骤以及如何在自动驾驶和机器人系统中应用该算法进行路径跟踪。Pure Pursuit是一种用于路径跟踪的控制算法。它通过计算角速度控制机器人从当前位置移到机器人前方的某个预瞄点。假定线速度是恒定的,当然可以随意更改机器人的线速度。

xiewf的博客 1万+

探索Java集合的奥秘:黑马程序员的宝藏笔记

探索Java集合的奥秘:黑马程序员的宝藏笔记 【下载地址】黑马程序员Java学习笔记集合 本资源文件包含了黑马程序员的Java学习笔记,重点聚焦在集合部分。内容包括源代码示例、相关图片以及详细的学习笔记,旨在帮助读者深入理解Java中的集合框架 ...

gitblog_06508的博客 607

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

黑马程序员—八期黑马,我放弃了

文章来源:黑马程序员,黑马论坛

heima_271的专栏 5031

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【C++】黑马程序员-C++基础语法学习笔记

根据黑马程序员C++课程内容,结合讲义,将自己学习C++的过程中将自己觉得有必要记下的笔记进行整理,方便复习回顾,编程环境为VSCode。编写代码: 运行程序:作用: 在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码两种格式通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明 多行注释: /* 描述信息 */ 通常放在一段代码的上方,对该段代码做整体说明 多行注释快捷键: ①注释/取消:Ctrl+Shift+/ ②注释:Ctrl+K+C ③取消注释:Ctrl+K+U作用:给一段指定的内

qq_62361050的博客 1792

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

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

黑马程序员—我的面试,我的学习,我的经历

文章来源:黑马程序员,黑马论坛        首先还是简单的做个自我介绍吧,我是黑马七期的一名很普通的学员,从黑马毕业有一个多月了,现在也上班了,薪水不高试用期5.6k转正7k,这次主要就是想和大家聊一聊我来黑马之前的一些想法,以及来黑马学习完以后,找工作的一些经验分享,可以给一些想要来学习,或者是正在学习,以及正在找工作的学弟、学妹们一些参考,同时也祝愿你们能够尽快

heima_28的专栏 1万+

【亲测免费】 B站黑马程序员Python教程学习笔记资源下载

B站黑马程序员Python教程学习笔记资源下载 【下载地址】B站黑马程序员Python教程学习笔记资源下载 此项目提供B站黑马程序员Python教程的详细学习笔记,涵盖了Python基础语法、数据结构、算法、面向对象编程等核心内容,并包含实际编程案例。这些笔记以PDF形式呈现,适合希望通过自学提升Python编程技能的学...

gitblog_06713的博客 1915

黑马程序员C++学习总结【核心篇】

附:参考自哔哩哔哩黑马程序员所做的学习笔记

小幸运召唤师的博客 2269

多线程(黑马程序员学习笔记)

本文是黑马程序员Java视频教程的学习笔记,重点介绍了进程、线程及其在Java中的实现方式。进程是系统资源分配的基本单位,具有独立性、动态性和并发性;线程是进程中的任务执行单元,多线程能提高执行效率。Java中开启线程的方式包括继承Thread类、实现Runnable接口和实现Callable接口,分别适用于不同场景。文章还详细讲解了线程的常用方法,如获取线程名称、线程休眠、设置优先级和守护线程等。此外,探讨了线程安全问题及解决方案,如同步代码块、同步方法和Lock锁,并介绍了死锁的产生条件及避免方法。

A2294249395的博客 1637

前端学习笔记-黑马程序员

前端学习笔记-黑马程序员 【下载地址】前端学习笔记-黑马程序员 这是一份由黑马程序员精心整理的前端学习笔记,专为初学者和进阶开发者设计。内容全面覆盖前端开发的核心技术,包括HTML、CSS、JavaScript等基础知识,以及常用框架、工程化、性能优化和安全问题等高级主题。通过系统化的章节安排和丰富的代码示例,帮助您快速...

gitblog_06722的博客 512

Shell脚本学习笔记(黑马程序员shell全套教程)

这篇Shell教程介绍Shell作为连接用户与Linux内核的桥梁,通过80讲系统课程从零基础到实战。内容涵盖Shell基础知识、运行原理、解析器类型等,讲解了Shell脚本作为编程语言的特点(含变量、函数、逻辑控制等),以及如何通过Shell命令提升Linux系统管理效率。教程附带MobaXterm终端工具使用说明,适合Windows用户进行SSH连接和Shell学习。

weixin_67732682的博客 1215

MySQL 学习笔记(黑马程序员)

多表查询。

A2294249395的博客 2031
上一篇: 黑马程序员---学习笔记1:运算符
下一篇: 黑马程序员---学习笔记3:进制
七分热度_HD
博客等级 码龄14年 12粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值