C++ 内存分配规则

咱们一起学C++第九十八篇:之变量作用域、内存分配与程序设计 在C++的学习道路上,我们一路同行,共同探索。每一次的分享都希望能成为大家进步的阶梯。这次,我们将深入剖析变量作用域、内存分配以及它们与程序设计的紧密联系。通过清晰的讲解和实例分析,让大家更好地理解这些关键概念,从而能够编写出更高效、更健壮的C++程序。让我们携手共进,在C++的知识海洋中继续畅游,共同成长,共同提升。 阅读详情

在C++中,内存分配是一个重要的主题,它涉及到如何为变量、对象和数据结构分配和释放内存。以下是C++中的一些内存分配规则:

自动存储持续期: 当你声明一个变量时(如基本数据类型、对象等),它会被分配在自动存储区域,也称为栈上。这些变量的生命周期与其所在的作用域相对应,当超出作用域时,它们会被自动销毁。栈上的内存分配和释放是自动的,无需显式管理。

动态存储持续期: 通过new操作符(C++98)或者更好的是使用智能指针或std::make_unique、std::make_shared等函数(C++11起),你可以在堆上分配内存,以创建对象。堆上分配的对象的生命周期由程序员手动管理,需要在不再需要时使用delete操作符(或者通过智能指针自动管理)释放内存,以避免内存泄漏。

静态存储持续期: 静态变量和全局变量在程序整个运行期间都存在,它们的存储位置位于静态存储区域。这些变量在程序启动时分配,并在程序结束时销毁,生命周期超过了任何特定的作用域。

内存分配和析构顺序: 对象的构造顺序与其在代码中的声明顺序相同,而析构顺序则相反。如果一个对象是另一个对象的成员,那么它的构造函数将在包含它的对象的构造函数之后被调用,而析构函数的调用顺序相反。

操作系统管理堆: C++的new和delete操作符实际上是使用操作系统的内存管理功能来分配和释放堆内存。操作系统负责管理整个进程的内存空间,包括栈、堆和全局存储区。

内存对齐: 许多平台对于数据的存储有内存对齐要求,这意味着数据应该存储在特定的内存地址上,以便于处理器高效地访问。C++编译器会自动进行内存对齐,但在某些情况下可能需要手动控制对齐方式。

数组内存分配: 使用new操作符分配的数组应该使用delete[]来释放,而不是使用delete。使用std::vector等标准库容器可以更安全地管理动态数组。

总之,C++内存分配涵盖了自动存储、动态存储和静态存储三种类型,开发者需要根据变量的生命周期、作用域和需求来选择适当的内存分配方式,并遵循良好的内存管理习惯,以避免内存泄漏和其他资源管理问题。

IT世界里的“国境线”(芯片与算法篇) 首先分析下概念,对于芯片,相信大家已经比较了解,就不做过多的解释。我们说一下算法,虽然算法是应用在IT领域,但我相信学数学的同学,特别是学习计算数学的,对算法应该更加熟悉。记得在本科课程中,专门有一门课叫做“算法设计”。从概念上来讲,算法指的是解决问题的方法和流程,是一段逻辑,一系列解决问题的清晰指令。或者更通俗一点来讲,算法是从A到B,所有可能的计算方式。 一、 芯片与算法的关系 芯片和算法并不是独立或者对立的两个个体。芯片本身就集成了算法。算法是一种逻辑概念,芯片是算法的一种表现形式,软件也是算法的 阅读详情

相关推荐

混合编程实战:C#集成C++ PCL点云处理库,打造跨语言动态链接库

本文详细介绍了C#与C++混合编程实战,重点讲解如何通过动态链接库(DLL)集成C++ PCL点云处理库,实现跨语言协作。内容涵盖环境配置、PCL功能封装、C#调用DLL的完整方案,以及性能优化和错误处理等进阶技巧,帮助开发者高效处理大规模点云数据,提升工业软件开发效率。

weixin_42620913的博客 383

c++各种类型变量的内存分配

程序在的内存中的分配(常量,局部变量,全局变量,程序代码) 一. 在c中分为这几个存储区 1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放 4.另外还有

BullJordan23的专栏 5410

实战ByteTrack:用C++手把手教你实现多目标跟踪(附完整代码解析)

本文通过C++实战教程,手把手教你实现ByteTrack多目标跟踪算法。文章详细解析了算法核心,包括利用卡尔曼滤波进行状态预测、匈牙利算法完成数据关联,以及ByteTrack独特的三次匹配策略来有效处理低置信度检测框,并提供了完整的项目架构、代码实现与性能优化指南。

yolo5detector的博客 301

C++中的变量内存分配方式

C++中的变量可能分配在5个地方中的一个:栈、堆、自由存储区、全局/静态存储区、常量存储区。 其中,局部变量,函数的形参是分配在栈中的。这段内存由编译器自动分配、释放。 new和delete用来申请的释放堆上的内存。 malloc和free用来释放自由存储区上的内存。 全局变量\static都分配在全局/静态存储区中。 常量则分配在常量存储区中。 在windows下,栈是向低地

thefutureisour的专栏 1138

固定时间收敛的控制器设计(基础知识)

针对控制系统的有限时间收敛和固定时间收敛给出一些常用定理。

qq_40241332的博客 1万+

ICCompiler II实战:从NDM生成到APR流程的完整避坑指南

本文是一份针对ICCompiler II(ICC II)后端物理实现流程的实战避坑指南。文章详细解析了从NDM库生成、设计初始化、布局规划到时钟树综合与布线的完整APR流程,重点分享了各环节的常见陷阱、精细化配置命令与调试经验,旨在帮助工程师高效达成PPA目标,确保设计一次成功。

p4q5r6s7t的博客 533

C\C++中内存的分配规则

C\C++,堆栈,内存分配

m0_65217117的博客 513

网易CodeWave智能生成应用实战:5分钟搞定库存管理系统(附详细配置截图)

本文详细介绍了如何利用网易CodeWave智能生成应用在5分钟内快速构建定制化库存管理系统。通过自然语言描述需求,无需编程即可生成包含产品管理、库存预警等核心功能的应用,并支持字段微调、业务流程注入等深度优化。文章附有详细配置截图,帮助用户高效实现数字化转型。

julia4scientist的博客 889

c++类型内存分配规则

c++类型内存分配规则 本文试图回答这样3个问题: c语言结构体内存对齐的规则? class、enum、union的作用和区别? VC等主流编译器究竟是如何管理一个类的分配空间的? 一、c语言结构体内存对齐规则 这是一个c语言类型内存分配最基本的问题了,我以前看到的一些说法经过自己的测试并不完全正确,学会了这个思路之后,以后再被问到这个问题就再也不怕了! 首先看一段代码: class A{ char a;//1B double b;//8B int c;//4B }; int m

weixin_42923076的博客 2300

NuPlayer 之 Renderer

触发postDrainAudioQueue_l()或postDrainVideoQueue()开始渲染。解码器输出数据 → NuPlayer::Decoder::onMessageReceived。音频数据存入mAudioQueue,视频数据存入mVideoQueue。• 每次写入后通过mNotifyConsumed通知解码器。• 通过AudioSink::write()写入音频设备。• 根据VSync信号和音频时钟调整渲染时机。• 通过Surface直接提交给显示系统。

aningxiaoxixi的博客 318

OSPF规划两大模型:双塔奇兵、犬牙交错

大家好,今天给大家带来的是OSPF规划两大模型:双塔奇兵、犬牙交错,让我们直接开始吧! OSPF规划之双塔奇兵 说明: OSPF 如果某个区域存在两个 ABR,并且在两个 ABR 上都对 area n 内的路由做了聚合操作。 最佳配置: 两台ABR之间的红线应该使用以太网的子接口技术,一个子接口属于area0,另一个属于 area n;或者该链路规划为 area n,同时配置虚连接; ABR 的 loopback0 规划入 area 0 OSPF 规划之犬牙交错 说明: 有时接入层的设备会以乱序的

网络技术联盟站 2425

C++:01.从C到C++:浅拷贝,优化规则,内存分配

new int[20]和new int[20]() 有()初始化为该类型的默认值       没有(为随机值)     开辟单个元素可以在()内随意初始化,但开辟数组是()内不能写入数字 类的成员方法在类体内定义和在类外定义: 1.类外定义的成员方法,在方法名字前面加类类型的作用域 2.类外定义的在调用时,有函数的正常开销(函数运行需要再栈上开辟内存);在类体内定义的函数,都被自动处理成inl...

V的博客 469

【Qwen2微调实战】LLaMA-Factory框架对Qwen2-7B模型的微调实践

在人工智能的浪潮中,大型语言模型(LLMs)正逐渐成为研究和应用的热点。它们在自然语言处理(NLP)的各个领域,如文本生成、翻译、问答等任务中展现出了卓越的能力。Qwen2-7B模型,作为该领域的佼佼者,不仅因其庞大的参数量和强大的表示能力受到关注,更因其在微调后能够更好地适应特定任务而备受关注。本文将详细介绍如何利用LLaMA-Factory这一高效的微调框架对Qwen2-7B进行微调,以期达到提升模型在特定任务上的表现。

寻道AI,探索AI无限可能! 2万+

C++内存分配规则

#include <iostream> #include <string.h> using namespace std; // 程序的内存地址的划分 // 1. 操作系统位数不同,地址划分也会存在一定的差别。但是有一些核心区域是固定的 // 内存区域划分: // 保留区:0开始,C库函数(不能变动) // 代码区: 一个程序执行的时候,会按照次序依次从代码区调用程序运行(也是不可修改的) // 全局变量区: 包括两个部分:.data (非0值)、.

fengxuewei123的博客 258

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

VB摄像头监控

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

c++语言基础:Vector的内存分配方式与扩容规则

vector的内存分配方式与扩容规则

qq_51046087的博客 3612

SAP B1中文培訓教材_SDK

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

C/C++程序 内存分配规则(堆栈的系统分配规则)

一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。 2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、静态区(static)—全局变量和局部静态变量的存储是放在一块

555

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

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

结构体struct 内存分配规则及地址运算

参考:https://blog.youkuaiyun.com/qq_44443986/article/details/110082316。, 就是一个地址,其地址-2就是基于该地址向后移动2个单位空间,而该地址是4,其单位空间大小为4,因此。, n代表一个整数)并不是以字节为单位,而是以。类型的内存空间, 其大小为4, 取地址后,为8 (64位系统下)。解释: 在 C++ 中,

AlbertChou1的博客 834

结构体的内存分配

首先来看一段代码: #include<iostream> using namespace std; struct man { double b; // 8 char a; // 1 int c; // 4 }; int main() { man A; cout<<sizeof(A)<<endl; cout...

藏经阁 2152

重载new和delete的一些规则

重载new和delete的一些规则重载new和delete的一些规则 一般规则 特殊规则1 特殊规则2 特殊规则3 new和delete重载实例 直接获取当前的new_handler 转载请注明出处参考:《Effective C++》一般规则1.内存分配失败时调用new_handler 关于new_handler参考: http://blog.youkuaiyun.com/sanoseiichirou/ar

Sei的博客 3322

结构体(位段)内存分配

结构体(struct)在C和C++编程语言中是一种复合数据类型,它允许你将不同类型的数据项(变量)组合成一个单一的变量名。位段(Bit-fields)是结构体中的一种特殊成员,它允许程序员指定每个成员所占用的位数,而不是使用整个字节或更大的内存空间。最后,sty成员中的sex与score内存连续,但sty的内存大小与sex的内存位置也是数值差4。其次,stu成员中sex的内存位置不在21,即可推测name成员起始内存位置在0。首先,stu的内存大小并不为29个字节,即证明结构体内存不是所有成员的字节数和。

2301_79587525的博客 2490

【C++】class/struct的内存分配问题

说明:以32位系统为例,以class举例说明(C++的struct和class基本是一样的)内存分配的问题。 1、空类 class A{ }; sizeof(A) = 1 C++标准规定,不允许一个对象(当然包括类对象)的大小为0,不同的对象不能具有相同的地址。这是由于: new需要分配不同的内存地址,不能分配内存大小为0的空间 避免除以 sizeof(T)时得到除以0错误 故使...

Magnum的博客 1891

C++ struct内存分配大小

C++ struct内存分配大小 一  原则: 1 所有字段在内存中出现顺序与声明顺序一致 (理论上,译器可以随便放置各个字段) 2 由于性能原因,大多数编译器实际上会将struct 的各个字段对齐放置在合适的内存边界。具体细节随着语言编译器和CPU的不同而不同。在80X86体系中,符合Intel应用二进制接口(ABI  Application Bianry Interface)的编译器会将

coffeecato的个人博客 3260

C++内存分配方式、内存错误及其对策

C++内存分配方式、内存错误及其对策 内存分配方式有三种: 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 从堆上分配...

《好好先生》专栏 978

c++new时赋初值_又被C/C++的内存坑了?5个黄金规则请谨记!

1、引言对于计算机程序处理而言,对内存的管理就像是对一片雷区的管理,管理的好,可以杀死一片一片的bug,管理的不好,将使你自己抓狂,程序漏洞百出,直至崩溃,据调查80%的程序崩溃都是内存的管理出现问题,有时候表面没有问题,运行一段时间后问题就爆发了,所以对内存的管理非常重要,这里和大家一起总结讨论下C/C++中关于内存管理的一些要点。2、内存分配方式内存分配方式有三种:(1)从静态存储区...

weixin_39975055的博客 401

C和C++中const变量内存分配问题详解

一、const变量的内存分配 1.const全局变量,或者static,extern 关键字 此时该常量是存放在.rodata段的—Read Only Data也就是常量区,是无法通过取地址方式去修改的,修改内容会报段错误(gcc++编译器:Segmentation fault(core dumped))。   例如extern const int i=10,   static const int i=10。 2.const局部变量 在C语言中,const局部变量在栈分配内存,不能通过赋值,自

u014157109的博客 8016

c++类的内存分配方式

面试时有一些经常会问到的问题,其中对于内存字节的分配方式是一个经常被问到和考到的一种题目,前几天同学出去参加面试时就被问到,当时考官的提问是一个空类占几个字节,他回来跟我们说到,我无语的笑了笑,因为真心是不知道,我第一直觉是不占内存,只有实际分配了对象才占内存,但是好像错了。所以就上机测试了一下,发现内存的分配还是很有玄机的,下面就几种情况一一说明。一般分为一下几种情况,我基本上都测试过,而且总结

qingtianweichong的专栏 1250
上一篇: C++如何合理地写代码
下一篇: cin 和 scanf 的区别是什么
AlgorithmHero
博客等级 码龄4年 606粉丝 1067原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlgorithmHero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值