C语言 基础知识之const(const是什么,const的作用,const的使用)

C语言const用法详解 const用法详解 阅读详情
AI摘要

本文详细阐述了const在C/C++编程中的作用,包括常量变量声明、引用和指针的应用,以及如何正确地在多文件间共享const变量。通过实例讲解,展示了const如何提升代码安全性与效率。

一、const是什么

    const是C/C++中的类型修饰符。

二、const的作用

    1、对变量声明只读特性,保护变量值以防被修改。

    2、节省空间,避免不必要的内存分配。const修饰的变量在程序运行过程中只有一份拷贝。

    3、提高程序运行效率。编译器不为普通const常量分配存储空间,而是将他们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储和读取内存的操作。

三、const的使用

    1、const和普通变量

       (1)编译器在编译过程中把用到const变量的地方都替换成对应的值。为了执行这个操作,编译器必须知道const变量的初始值, 如果程序包含多个文件,则每个用了该const变量的文件,都必须能访问到它的初始值才行,要做到这一点,就必须在每一个用到该const变量的文件中都有对它的定义或声明。   

                默认状态下,const变量仅在文件内有效,当多个文件中出现了同名的const变量时,等同于在不同文件中分别定义了独立的const变量

                定义一个const变量

        const type value_name = value;

       (2)对于有必要在文件间共享的const变量,在const变量定义和声明时添加extern关键字即可。

                例如:

                在test_extern_const.cpp中定义并初始化一个可被外部访问的const变量

        extern const int test_extern_const = 0;

                在test_extern_const.h中声明变量extern_const_test和函数print_test_extern_const_value

        #ifndef _TEST_EXTERN_CONST_H
        #define _TEST_EXTERN_CONST_H

        extern const int test_extern_const;

        #endif

                  在main.cpp中使用变量test_extern_const

        #include <iostream>
        #include "test_extern_const.h"
        using namespace std;

        int main() {
            cout<<"test_extern_const value is "<<test_extern_const<<endl;
            return 0;
        }

            从main的运行结果可以看到,const变量test_extern_const被外部文件成功访问

                     

    2、const和引用

               把引用绑定到const变量上,称为对常量的引用。与普通引用不同的是,对常量的引用不能修改它绑定的变量的值。

               常量引用仅对引用可参与的操作做出了限定,对于引用的变量本身是不是一个常量未做限定。

        const int test_const = 0;
        const int &reference_to_const = test_const;

    3、const和指针

        (1)指向常量的指针

                 指向常量的指针没有规定其所指向的变量必须是一个常量。指向常量的指针仅仅要求不能通过该指针改变变量的值。

        const double value_name_1 = value;
        const double *pointer_to_const_1 = &value_name_1;

        double value_name_2 = value;
        const double *pointer_to_const_2 = &value_name_2; 

        (2)常量指针

                 指针本身为常量,常量指针必须初始化,一旦初始化完成,它的值就不能再改变了。即不变的是指针本身的值而非指向的那个值。

        int value_name = value;
        int *const const_pointer = &value_name;

C语言 const、static、volatile等关键字的作用 本文简单介绍了const、volatile等关键字的作用。 阅读详情

相关推荐

【C语言】const 关键字详解

我们展示了如何定义常量、如何使用const修饰指针以及如何将const用于函数参数。通过这些用法,const可以帮助我们编写更安全、更稳定的代码。

LuckiBit 2899

C语言中const关键字的用法

关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理,所以说const的存在一定有它的合理性,与预编译指令相比,const修饰符有以下的优点: 1、预编译指令只是对值进行简单的替换,不能进行类型检查 2、可以保护被修饰的东西,防止意外修改,增强程序

xingjiarong的专栏 31万+

Jenkins+docker 微服务实现自动化部署安装和部署过程

本文详细介绍了如何使用Docker部署Jenkins自动化服务器。主要内容包括:1)拉取Jenkins官方或BlueOcean镜像;2)创建容器并配置端口映射、数据卷挂载;3)设置防火墙规则;4)配置清华大学镜像加速;5)安装必要插件;6)SSH密钥配置;7)构建触发器设置;8)编写自动化构建脚本。通过Docker部署Jenkins可以简化安装流程,确保环境一致性,并利用容器特性实现快速启动和管理。文章提供了完整的配置步骤和注意事项,帮助用户快速搭建CI/CD环境。

qq_33665793的博客 1687

const 详解

一、 const: 关键字,限定一个变量不可被修改 二、const的使用 2.1 定义const变量:初始化完成后,值不可被修改 2.2 const和指针 常量指针:不能通过指针修改指针所指向的变量的值。但是指针可以指向别的变量。 指向常量的指针(指针常量):指针常量的值不能被修改,即不能存一个新的地址,不能指向别的变量。但是可以通过指针修改它所指向的变量的值。 2....

努力进阶的小菜鸟 1万+

JS实例(三)图片的缓慢放大和缩小

  我们经常能看到在一些网站中可以通过按钮实现对图片的放大或者缩小,也有可能是鼠标经过时图片放大。在本例中就是通过JavaScript实现图片的放大和缩小。   首先是进行简单的页面布局 1 <div class="imagedispose"> 2 <img src="1.jpeg" id="imaged" width="400px" height="3...

weixin_34235105的博客 314

【VeriStand】从零构建HIL测试平台:核心概念、硬件选型与实战配置指南

本文详细介绍了如何从零构建HIL测试平台,涵盖核心概念、硬件选型与实战配置指南。重点解析了VeriStand生态系统的优势,包括开箱即用特性、与LabVIEW的黄金搭档配合及Python支持。通过实战案例和硬件选型建议,帮助工程师高效搭建可靠的HIL测试平台,提升测试效率与安全性。

weixin_29250573的博客 329

『C语言进阶』const详解

常类型,使用类型修饰符const说明的类型,常类型的变量或者对象的值是不能被更新的。const含义:只要一个变量前用const来修饰,就意味着该变量里的数据只能被访问,而不能被修改,也就是意味着“只读”(readonly)

Aron的博客 3608

innovus实战攻略 | 用setUsefulSkewMode解锁时序优化的“隐藏技能”!

就像时序优化的“瑞士军刀”,参数虽多,但掌握了分类逻辑后,用起来其实很简单!如果你有更绝的用法,欢迎在评论区分享,大家一起卷起来!简单来说,它就是时序优化的“乾坤大挪移”。通过调整触发器的时钟到达时间,把关键路径的建立时间“借”给非关键路径,从而实现全局时序收敛。别急,这个命令就是你的“时序救星”!(工具最多只能借1.2ns的裕量,防止“借过头”导致新问题!这个参数能帮你兜底!(对关键路径“下死手”,确保优化到位!(设置上限,给工具套上“紧箍咒”!(直接跳过边界,避免优化反噬!(全局管理,防止“借过头”!

weixin_50820814的博客 1355

C/C++ const详解

1. 什么是const 1.1const基础知识 const是C语言关键字之一,它先定了一个变量为只读变量(即变量的值不能被修改)。 const通常作为符号常量出现,能够增加代码的可维护性。 例如我们可以定义某一类元素个数固定的数组的大小为const size = 10; 1.2. const主要有如下几类应用 常变量 const <类型...

L24986721的博客 115

Cesium体渲染实战:从医学CT到气象数据的3D可视化全攻略

本文详细介绍了如何利用Cesium体渲染技术实现医学CT和气象数据的3D可视化。从数据预处理到交互式渲染,涵盖了DICOM和NetCDF格式的处理技巧,以及性能优化的实战策略,帮助开发者高效处理复杂的三维数据集。

weixin_28717431的博客 420

YOLOv8改进,YOLOv8添加DCNv3可变性卷积,无需编译

DCNv3在DCNv2版本上进行了改进,上一期我们在YOLOv8中添加了DCNv2,这一期我们将添加DCNv3,DCNv3代码详解可以参考链接:代码详解——可变形卷积(DCNv3)

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 5021

C语言常量 变量与作用域

变量与常量一、常量与符号常量constdefine二.变量与变量定义命名规则1.变量定义语句2.变量赋初值typedef 一、常量与符号常量 整型常量 以下是合法的整型常量表示形式: 256,-75,0(十进制整型常量) 0237,045,0621(八进制整型常量,用数字0作前导) 0x28AF,0xED4(十六进制整型常量,用数字0与x作前导)435L,350L(长整型常量) 不合法的整型常量举例如下: 096(9非八进制数码) 48EA(十六进制数缺前导字符0x) 0xK(K非十六进制计数字符)

qq_51163115的博客 3万+

RT-Thread精通PM功耗调优 - Tickless篇

背景 让别人的思想装到自己的脑袋里,这不仅需要威逼利诱,还需要讲清楚原理。喜欢才能接受。 功耗基本的调试手段,估计前面讲了很多,或许只有少数人群可以接受。 更有极少的人,了解了整个功耗管理的体系、原理,愿意接受这样的【安排】。 这里的功耗调优思路,其实只是解决功耗问题的一种思路,并不是框架。 解决问题,自古以来,都是千奇百怪,秒在【奇】。 介绍 本篇介绍下Tickless的工作原理。 Tickless 可以理解为:tick-less,tick or little tick。 tick定.

坚韧与专注 1529

C语言 关键字const的作用

关键词解释 const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。 定义 const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。 主要作用 1、可以定义const常量,具有不可变性 2、便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int

WhiteShirtI的博客 1万+

pscad IEEE标准系统搭建说明

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

c语言中 const 的作用

const 详细版

gaoaodefish的博客 1922

深度学习工具包 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语言中const关键字的作用

C语言中const关键字的作用

weixin_69283129的博客 3124

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

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

C语言关于const的爱恨情仇-const关键字的作用

在C语言中,const总是时常混迹于各处,让初学者很是头疼,今天我们的主要内容,就是讲const在C语言的作用,讲一讲const的爱情故事,着急的朋友可以直接看完结部分。const 中文释义:不变的,恒定的。著名的物理学家爱因斯坦曾经说过,运动是绝对的静止是相对的,const表示没有人比我更懂这点。

qq_74078075的博客 2024

c语言 const常量作用,C语言 const常量讲解

//const的本质//const本质上是伪常量,无法用于数组初始化以及全局变量初始化//原因在于const仅仅限定变量无法直接赋值,但是却可以通过指针间接赋值//例如局部常量在栈区,而不在静态区(静态区会一直存在),也不在代码区(代码区只读,禁止修改)#include#include//const与define的区别#define X 10.0const int Y = 9.0;//赋值时会自动...

weixin_31156945的博客 5387

解释 C 语言中的 const 关键字的作用

使用const可以定义一个值在程序运行期间不能被修改的常量。在上述示例中,MAX_VALUE被定义为一个整型常量,其值为100,在程序的任何地方都不能再对其进行修改。在 C 语言中,除了使用const来定义常量,还可以使用宏定义。100宏定义在预处理阶段进行简单的文本替换,而const定义的常量在编译阶段有类型检查。宏定义没有类型信息,可能会导致一些潜在的问题。例如,如果将宏定义用于表达式中,可能会因为意外的类型转换导致错误。而const常量具有明确的类型,编译器可以进行更严格的类型检查。

2401_86074221的博客 1412

深入探究 C 语言中 static 与 const 关键字的作用

static和const关键字在 C 语言中各自有着独特而重要的作用。static主要用于控制变量和函数的存储方式、生命周期以及作用域,有助于实现程序的模块化和封装性;而const则专注于保证数据的常量性,提高程序的安全性和可读性。熟练掌握这两个关键字的使用,能够使我们编写出更加健壮、高效且易于维护的 C 语言程序。希望通过本文对static和const关键字作用的详细阐述,能帮助读者在 C 语言编程中更加准确地运用它们。如果对这两个关键字还有其他疑问或见解,欢迎在评论区留言交流。

AC的博客 1053

c语言const作用域,C/C++:Const总结

指针变量和它所指向的内存空间是两个不同的概念由于Const在C和C++中存在差异,本篇将会对Const在两种语言的表现异同点上进行对比探讨。实现方式不同在C语言中,Const修饰的变量只是告诉编译器该变量是一个只读的变量,不能通过该变量改写器内存空间中的值,但是其本质上还是一个变量,既然是变量,就会有内存地址,因此可以通过指针间接修改该地址空间的值。const int a = 10;int* p ...

weixin_39610774的博客 952

c语言中的const的作用及解析

转载:http://www.cnblogs.com/zhangjiansheng/p/6527708.html 简介: 有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小。为了满足这一要求,可以使用const关键字对变量加以限定: const int MaxNum = 100; //班级的最大人数 这样 Ma...

Do 2164

c语言数组前const的作用,C语言的const使用方法

C语言的const使用方法C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。以下是小编为大家搜索整理的C语言的const使用方法,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。const的使用是c语言中一个比较微...

weixin_39566882的博客 1026

c语言中const的修饰作用

c语言中const的作用以及注意事项

m0_74234485的博客 1571

C语言 CONST修饰符详解

C语言中的CONST修饰符用于声明常量,其值不可修改,可提高代码安全性和可读性。CONST可修饰普通变量、指针(根据位置不同限制内容或指针本身)、函数参数和返回值。在指针使用中,const char和char const完全等价,但前者更常见。随着C标准演进(C89/C90到C11),CONST功能不断完善。最佳实践包括合理使用CONST、保持代码风格一致,并注意与#define的区别(CONST类型安全且有内存分配)。尽管可通过指针强制转换绕过CONST限制,但应避免这种危险操作。

狂奔的鸵鸟 1080
上一篇: L2TP协议笔记
下一篇: C语言 基础知识之static(static是什么,static的好处,static的使用和作用)
李江林
博客等级 码龄9年 50粉丝 31原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值