C++的const增强

第133章 PCL OrientedBoundingBox 有向包围盒 中文叫有向包围盒,是一种旋转过的包围盒。特点:不像AABB那样固定朝向坐标轴能更紧密地包裹物体适用于复杂姿态的物体,比如倾斜、旋转的物体通常通过PCA、惯性矩等算法确定方向。 阅读详情
struct student
{
int id;
char name[64];
};
void change_stu(struct student *s)
{
s->id = 10;
}
void change_stu2(const struct student *s) 
{     //指向常结构体的指针     指针常量
//s->id = 10;此时s所指向的区域是一个常量  不能够被修改
//但是内存空间可以被修改
struct student s2;
s = &s2;
}


void change_stu3(struct student *const s)
{
s->id = 10;
struct student s2;
//s = &s2; //s是一个常量指针 s的内存空间不能被修改
}


void change_stu4(const struct student *const s)
{
//s->id = 10;   都不能被修改
//struct student s2;
//s = &s2;//   s是一个

}

void test6() {
const int a = 10;//c++的const确实对a起了保护作用 不能通过指针间接赋值概念a的值


int *p = (int*)&a;//当c++ 编译器 发现对一个const的常量符号取地址
*p = 20; //c语言中可以通过指针间接赋值改变const 变量
      //*p是改变的临时的变量 而不是 常量a
printf("a = %d\n", a);


}


《Python基础教程》内容总览篇(持续更新中) 大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为优快云博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。个人精心开设的《Python基础课程》专栏订阅量接近900,帮助不少同学解决了Bug。 阅读详情

相关推荐

OPTISYSTEM实战指南:线性调频连续波激光雷达系统仿真设计

本文提供了一份基于OPTISYSTEM软件的线性调频连续波激光雷达系统仿真实战指南。文章详细阐述了从软件界面熟悉、核心参数设置,到发射端、信道模型、相干接收端完整系统搭建的全过程,并介绍了性能优化与高级仿真技巧,旨在帮助读者快速掌握利用OPTISYSTEM进行低成本、高效率激光雷达系统设计与验证的方法。

weixin_29288313的博客 297

C++中const关键字的加强

C++ (2)C++对C语言的提高(const关键字的加强) C语言中的cosnt是一个冒牌货,即使用来修饰变量的值不能修改,但是还是可以通过指针指向这个变量,然后修改指针指向的内存来修改这个变量的值. #include <stdio.h> int main() { const int a = 100; //a = 200;//error int *p = &a; *p = 200; printf("a=%d *p=%d\n", a, *p); return 0;

kittimzhe的博客 238

Augustus手动安装教程

本文记载了如何结合conda手动安装Augustus

m0_65437087的博客 1257

04C++const增强、枚举的增强

#include <iostream> int main(void) { //const定义常量--->const意味着只读 const int a; int const b; // 第一个和第二个意思一样,代表一个常整数型 const int *c;//第三个 c是一个指向常整型数的指针(所指向的内存数据不能被修改...

weixin_34223655的博客 195

红帽RHCE考试下午-RHCE (RH294)任务概览[2021最新版]

RH294任务概览 考试时间4个小时,6台虚拟机,15道题 原来通过脚本或者集群做的题现在都需要使用playbook实现 考试时大概有6台虚拟服务器,都已经做好了互相的免密 做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证 考试时需要将6台虚拟服务器在考试环境全部开启,物理机界面点击左侧按钮启动 考试时Ansible所有playbook都放在普通用户目录中且都以普通用户执行 注意:考试时一定注意要求将playbook放在哪个用户的家目录中,就需要用指定的户登录做题!

SunMy的博客 5619

人工智能AI在软件测试和质量效能中的实际应用

人工智能在软件测试中应用,介绍chatGPT在测试中的应用,还有多个AI驱动的测试工具。

lindafang72的博客 1万+

C++下的const增强

对于const在cpp里面和c下面的区别: 1.const做全局变量的时候,c++和c都是修改失败的; 2.对于const做局部变量的话,在c++里面,指针间接修改是不会改变原先的值的,但是在c语言下是可以改变原先的值的; 是因为,在c++下面语法会出现一个temp的变量; c++的环境下: 1 #include <iostream> 2 using namespace std; 3 4 int main (){ 5 6 const int

weixin_43441794的博客 235

第3课:大模型集成与API设计

OpenAIAnthropicGoogle国内厂商:文心一言、通义千问、讯飞星火。

lpfasd123的博客 111

C++的const 增强

C++的const关键字相比C语言有显著增强,主要体现在:1)常量默认内部链接性,避免跨文件冲突;2)更严格的类型检查,禁止const到非const的隐式转换;3)引入const成员函数保证对象状态不变;4)支持constexpr编译期计算。典型应用包括函数参数保护、返回const引用等。注意与C语言的差异,如指针声明顺序和constexpr替代宏定义。这些改进使C++在类型安全和性能优化方面更胜一筹。

weixin_42838749的博客 294

某城商银行生产容器云平台详细设计方案分享及经验总结

AS3模式的CIS容器部署在K8S集群内,作为F5的控制器,CIS容器通过对K8S集群内Configmap资源进行监控,将Configmap资源中的内容转化为F5的配置,将配置推送给 F5 ,CIS容器还通过K8S标准的API接口完成业务发现和实时监听集群内Pod的变化,一旦Pod发生变化,相应的更新会及时推送给F5,并完成更新。容器技术发展非常迅速,现在应用大多以容器作为承载介质,前两年在容器云上承载的应用类型主要是Web类,随着容器云领域的不断发展,越来越多的应用类型将迁移至容器云,包括有状态应用。

qq_61890005的博客 857

NSX-T 4.1部署搭建

NSX-T4.1 部署搭建

weixin_58250887的博客 564

[C++]1.2 关于const与define ,c++对c的增强

C++对C的增强: 1.全局变量检测增强 C语言全局变量中允许出现 int n;int n=1;的情况,C++则不允许这种重复定义。 2.函数检测增强 函数中的 参数类型、参数个数(函数调用参数)、返回值 的检测都更加严格。 3.类型转换增强 malloc返回值是void* 通常使用时会有个强行转换。C++语言中对malloc返回值类型的强制转换更加严格。 4.struct 结构增强 ①C++中struct的成员允许有函数的出现和调用。 ②定义结构变量时只需要结构命名,不需要前面再加str

easycome easygoing、 590

7.6 GPU页表更新机制

本文分析了AMDGPU驱动中BO到VA映射的页表更新实现机制。核心流程通过amdgpu_vm_bo_update()函数触发,支持CPU直接写入和SDMA异步命令两种更新模式。系统根据VRAM可见性自动选择最优更新策略,处理三种主要场景:命令提交、BO迁移和BO销毁。关键实现包括DMA地址数组处理、权限标志合并和BO迁移状态转换,最终通过amdgpu_vm_update_range()完成硬件页表更新。该机制有效平衡了更新延迟与吞吐量,为GPU虚拟内存管理提供基础支撑。

图形/计算GPU的驱动与虚拟化技术分享园地 2470

c++三目运算符及const关键字的增强

这是在c++中 ,我们可以看到a的值并没有被修改,这是由于c++编译器对const关键字进行了优化,在用const声明的变量会有一个符号表用于保存常量。在c语言中这么写会编译器会报左值必须是可修改的错,这是由于在c语言编译器中 a < b?a : b返回的是具体的值,即10=30,这显然不对。C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方。这是在c语言中运行的结果,通过间接赋值可以修改a变量本身的值。C语言中的三目运算符返回的是变量值,不能作为左值使用。C++中的const常量。

一个小菜鸡的学习之路 237

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

c++对c的增强扩展以及const关键字

c++对c的增强扩展以及const关键字

m0_70495061的博客 439

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C以及C++在const的区别,以及const在C++的增强

C语言中const是一个伪常量,可以通过指针间接赋值改变,在C++中const得到加强,定义的是真常量。 const int a = 3;const int b = 4;int array[a + b] = { 0 };以上语句在C语言报错,在C++中通过,即可说明真伪常量的区别。 定义:const type name=value;注意:初始化和定义一起 C语言通过指针改变const值: ...

社会我大姐,人狠胸不大(^_^) 1094

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[c++]const增强

#include <iostream> int main(void) { //const 定义常量---> const 意味只读 const int a; int const b; //第⼀个第⼆个意思⼀样 代表⼀个常整形数 const i...

weixin_30782293的博客 121

C++:08.string、c++const增强和引用本质分析

22.string、c++const增强和引用本质分析知识点:1. string 常见操作1.1.string创建1.2. string 与 char* 互转1.3. 遍历1.4. 添加1.5. 删除1.6. 替换1.7. 查找1.8. 大小写转换2. c++ 相对 c 的一些增强2.1 实用性增强2.2 register 增强(c中报错,c++可以通过)2.3 参数增强 (以下代码,c中没问题,c++中会检测报错)2.4 检测增强 (以下代码,c中没问题,c++中会检测报错)3. const 关键字4.

东方升起代码的博客 319

C和C++的区别(3) const增强

除非需要用到a的存储空间的时候,编译器迫不得已才会分配一个空间给a,但之后a的值仍旧从符号表中读取,不管a的存储空间中的值如何变化,都不会对常量a产生影响。在C语言中,只要是全局变量,不论有没有被const修饰,都是默认拥有外部链接属性的,也就是说这个全局变量不仅限于在当前文件下使用,只要我们在其他文件中,加上extern的声明,也是可以使用的。实验证明,b的值是10,这样来看,a依然是10没有改变,但奇怪的是,我把a的地址也打印出来了,与p的指向是一致的,可以a明明是10,怎么通过指针打出来是20呢?..

a只如初见的博客 514

C++学习day01 const在c++中的增强

const在c语言中是个冒牌货,可以通过*p间接的赋值。 而c++中const会成立一个符号表,通过拷贝*p不会改变原有的值

qq_59841463的博客 242

c++对const增强 和cosnt分配内存情况

const增强 c语言中const是伪常量,可以通过指针修改 c++中const会放到符号表中 c语言中const默认是外部连接,c++中const默认是内部链接 #include<iostream> using namespace std; const int m_a = 10; //在全局区域里,受到保护,不可以被更改 ...

LXY的博客 255

C++语言对C的增强(2)—— const增强、枚举的增强

1、const基础知识 1 #include <iostream> 2 3 int main(void) 4 { 5 //const定义常量--->const意味着只读 6 const int a; 7 int const b; // 第一个和第二个意思一样,代表一个常整数型 8 9 const ...

weixin_30251587的博客 92

C++基础梳理 2019.1.5(::作用域运算符、命名空间、using声明和using编译指令、C++与C语言的区别,const增强,const在c和c++中的链接性,const内存分配,引用

::作用域运算符 1、用于引用全局作用域,这是cpp对于c的扩展 2、使用std::cout ,说明作用域 #include&lt;iostream&gt; using namespace std; int atk=200; void test(){ int atk=100; cout&lt;&lt;"攻击力为:"&lt;&lt;atk&lt;&lt;endl; cout&lt;...

一直走,不要回头 511

笔记:C++类型检查增强( const、指针规范、nullptr)

笔记:C++类型检查增强( const、指针规范、nullptr) 1、const 在C语言中定义了const类型: const int a = 5; a = 100; error C2166: 左值指定 const 对象  const int a 不能作为左值而被赋值,然而在C中const类型的值真的不能修改了吗? #include&lt;stdio.h&gt; int m...

qq_42753291的博客 737

【C/C++学院】(4)c++开篇/类和对象/命名空间/类型增强/三目运算符/const专题/引用专题/函数增强

1.类和对象 成员函数,成员变量,抽象封装的能力。 求圆的面积; #include using namespace std; class circle{ private: double m_r;//成员变量 public: void setR(double r)//成员函数 { m_r = r; } double getR()

吴英强的技术博客 1647

【c/c++】cpp对c的增强

c++对c的增强

hutaotaotao的博客 1134
上一篇: android 图片加载缓存的开源框架
下一篇: linux 知识整理
PinGool
博客等级 码龄10年 6粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值