C++ const 关键字的简单总结

【C语言 C++】简单关键字Register,Const,Static,Volatile,typedef,Define的理解 Register     用register声明的变量称着寄存器变量,在可能的情况下会直接存放在机器的寄存器 中;但对32位编译器不起作用,当global optimizations(全局优化)开的时候,它会做出 选择是否放在自己的寄存器中;不过其它与register关键字有关的其它符号都对32位编译 器有效。 Const      被const修饰的东西都受到强制保护,可以预防意外的变 阅读详情

C++程序员面试时十有八九会碰到const的问题,所以为了能快点找到工作,还是要了解一下const的用法大笑

 

1. 用const修饰非指针变量,这是最简单的情况

    const int a = 10;
    int const b = 20;

    a = 11;                 // error C3892
    b = 21;                 // error C3892

加了const以后,a,b两个变量都变成read only的变量,试图修改其变量值的代码在编译时会出错。const int和int const是一样的,const前后顺序无所谓。

 

2. 当const和指针纠结在一起的时候,情况变得有点混乱

  • 定义const变量的指针,指针指向的内容为read only
    char buf1[32];
    char buf2[32];

    const char *p = buf1;
    //char const *p = buf1;     // same as above
    //const (char*) p = buf1;   // error C4430

    p = buf2;                   // OK
    *p = 'A';                   // error C3892

const char和char const是一样的,注意const (char*) p这种写法是错误的,至少MS的编译器是这么认为的
 

  • 指针自己为const变量,自己是read only
    char buf1[32];
    char buf2[32];

    char* const p = buf1;
    //char *const p = buf1;     // same as above, but looks weird

    p = buf2;                   // error C3892
    *p = 'A';                   // OK

char* const和char *const是一样的,*号随便和const及char中的哪一个放一起都无所谓,但*const看上去有点怪

 

  • 被指向的变量和指针都为const,即都为read only
    char buf1[32];
    char buf2[32];

    const char* const p = buf1;

    p = buf2;                   // error C3892
    *p = 'A';                   // error C3892

 

 总结:关键看*号的位置,const在*号前的是const变量的指针,const在*号后的指针本身为const。不必绞尽脑汁去考虑const char和char const的区别,其实它们没有区别大笑

 

3. 函数参数中出现const,情况和2类似

4. 类的成员函数为const

    牢记:标记为const的函数不修改data member的值,不能调用不是const的函数

但愿没有误导别人,但愿读MSDN时没看走眼

 

C++ const关键字的总结   const关键字是c++中一个很重要又很有迷惑性的知识点,这里对其进行一次总结。 const修饰非成员变量  const全局/局部变量         const全局变量 在文件a.cpp中定义了一个全局变量a int a = 1;  在文件test.cpp中使用全局变量a #include <iostream> using namespace std; ext... 阅读详情

相关推荐

C++之const关键字

const作用 const关键字在C++中真是无处不在,无论是函数参数,还是函数返回值,还是函数末尾都经常会看到const关键字,这表明C++中的const关键字是非常灵活的, 合理地使用const关键字能大大提高我们程序的健壮性。 被const修饰的即表明是常量性的、只读性的,不可随意修改的。因为const对象一旦创建后其值就不能再改变,所以const对象必须初始化。 const在C和C++中的区别 虽然在C中const也表示不可修改的意思,但是它的校验却没有C++中那么严格,比如在C中被const修改的

u012944685的专栏 2482

error C4430: 缺少类型说明符 - 假定为 int....的一种情况的解决方法

这段时间用VS2013写代码的时候,一不小心就出现了这个提示,这个问题困扰了我一段时间,不过总算解决了,这里记录一下!      我这里先描述本人碰到的问题:     正如上图所见,一段在我们眼里看起来没有任何错误的代码,居然爆出了4430的错误,先不急,我们先看一看DlgAddAccount.h文件中包含的头文件:     再看一看AddAccountInfoDlg.h中包

李树花开,风中摇曳 7万+

【Android】条形码/二维码扫描——ZXing源码分析

正在更新中 针对3.2.1版本源码 与其他版本代码可能会有出入,但核心思想基本不变。 首先从com.google.zxing.client.android包中的目录结构分析:Book:这个文件夹中有5个类: BrowseBookListener 实现了adapter的点击事项响应,通过获取ISBN,然后跳转到Google books中查询响应的详细信息。 SearchBookContents

年轻的学徒 2453

《C++ Primer Plus》简单理解const关键字

《C++ Primer Plus》简单理解const关键字

向往有那么一天梦幻的步态识别落地,开花❀! 992

利用 vivado实现加减法器的设计

本科计组实验:利用 vivado实现加减法器的设计

qq_52052302的博客 1万+

一、5.8GHz射频接收机链路仿真

5.8GHz射频接收机链路仿真 一、5.8GHz射频接收机链路仿真 文章目录5.8GHz射频接收机链路仿真目的一、原理1、仿真工具2、二次下变频超外超接收机二、要求三、内容总结 目的   1、熟悉射频接收机整体结构。   2、学习使用MATLAB工具进行行为级仿真。   3、进行简单的通信链路预算。   4、直观感受接收机各个模块对整体性能的影响。   5、分析增益、线性度、噪声系数等参数。 一、原理 1、仿真工具   MATLAB是一款功能强大的数学软件,针对不同领域提供各种工具箱,帮助设计者快

平乾的博客 6760

C++中const关键字的应用,简单、易懂、实用!

文章稍长,但是举例都很易懂。 1. 常量 c++用const将对象i定义为一个常量。定义之后,i的值就不可以再变了,所以i必须在定义时候被初始化。 所以 const int i; //错误的,i 必须被初始化 (在C中这种写法可以,但是这里只说C++的环境下) #include<iostream> int main() { const int i = 10; //正确,i被初始化 } 2. 代替#define的值替换功能 举例: #define NUMBER 100 上面这行代码是

W96866的博客 291

Framelet Transform

需要定义 Framelet 的基函数。Framelet 基函数可以是通过组合不同的小波函数生成的。# 这里可以定义 Framelet 基函数,例如一些小波基函数的线性组合# 这是一个示例函数,具体实现需要根据具体的 Framelet 设计# 示例:正弦函数。

qq_33009429的博客 1212

【C++】类与关键字static、const、extern的简单分析

一、类 1.类是什么:         类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。这有点像C语言中的结构,唯一不同的就是结构没有定义所说的“数据相关的操作”,“数据相关的操作”就是我们平常经常看到的“方法”,因此,类具有更高的抽象性,类中的数据具有隐藏性,类还具有封装性。 例如: #include using namespace std; cla

lz201788的博客 429

ksz9031 mmd读取不了_ZYNQ. LwIP.PHY.KSZ9031RNX

新一块板子米尔科技的z-turn 使用的PHY芯片是Micrel的 KSZ9031RNX 而不是zedboard上的Marvell的。直接使用lwip的echo server demo时会报错 , 无法启动。在网上找了很久终于找到几篇关于这个问题的文章。修改PHY的驱动xemacpsif_physpeed.c文件该芯片的PHY Identifier 是 0x0022bsp设置中修改参数以提速MEM...

weixin_39626298的博客 924

akamai3简单分析

akamai流程的简单分析

记录一些web逆向的过程 917

(半转载)C++拷贝函数的用法,const关键字和static关键字的简单介绍

2018/4/13C++1.说在前面:现在C++已经正式进入的面向对象阶段,所以对于类的设置有着一套套路,一定要规范化,在使用的时候才可以得心应手2.拷贝函数1.概念:拷贝函数是构造函数的一种,通过这种特殊的构造函数,实现了对一个对象"复制"给另外一个对象的操作,其实这就是对象传引的一种用法;2.操作方法//拷贝函数 Point::Point(Point(&amp;p)) { std::co...

Lzinner的博客 314

RKNN 端侧部署必看:YOLOv11 Pose 姿态估计模型转换与性能优化实战

随着人工智能技术在边缘计算领域的快速发展,姿态估计作为计算机视觉的重要分支,在智能监控、人机交互、体感游戏等场景中展现出巨大的应用潜力。本文深入研究了YOLOv11 Pose模型在Rockchip RKNN平台上的部署方案,从理论基础、模型转换、平台优化到实际部署进行了全面阐述。通过详细的技术分析和实验验证,证明了RKNN平台能够有效提升YOLOv11 Pose的推理性能,在RK3588硬件平台上实现了高达100 FPS的实时姿态检测,为边缘计算场景下的姿态估计应用提供了高效的解决方案。

m0_71589036的博客 183

如何区分“指向const对象的指针”和“const指针”?

  const是C++中引入的一个新的关键字,它为C++编程带来了很大的方便。指向const对象的指针和const指针是两个名字很接近的概念,对于初学者来说非常容易搞混,这里对它们进行区分。指向const对象的指针  可以这样理解指向const对象的指针:  指向const对象的指针就是一个指针,不能通过它来修改它所指向的对象的值·         声明方法:const int

2440

飞腾UEFI配置GPIO—飞腾FT2000/4 (D2000/8) GPIO引脚配置及使用

讲解了在飞腾UEFI代码中如何添加GPIO配置相关代码,并以GPIO1_B0—B7为例,将这8个引脚配置为GPIO工作模式并默认输出低电平

qq_30135687的博客 5345

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C和C++中的CONST  

C中的CONST    C中CONST的使用:  const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。  虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。  问题

陶野的窝 519

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

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

C语言关键字 - const

每天进步一点点。 若萌新总结有误,望牛人不吝赐教。>_ const:(constant:常数,不变的)这是一个类型修饰符,被它修饰的类型成为常类型,被它修饰变量或对象的值是不能“改变”的。(注意此处的改变不是绝对的不能改变,我们可以偷梁换柱通过其他方式改变) 下面来看一些关于const详细的用法: 1、const修饰简单类型的常量

jelly_9的博客 577

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

C++中的隐式构造,及const关键字

#include #include using namespace std; struct date { int year; int month; int day; }; struct Person{ string name; int age; bool gender; date d; Person(){ cout << "构造person结构"<<endl; }

gzylongxingtianxia的专栏 579

【C语言】const关键字

const关键字表示常量它可以修饰变量,函数,指针。

Julian的博客 370

cpp中定义常量使用宏还是const

1.简单直接:宏定义是一种简单的文本替换机制,在预处理阶段,编译器会将代码中所有出现的宏名替换为对应的常量值,不涉及类型检查等复杂操作,使用起来非常方便。2.不受作用域限制:宏定义每一作用域的概念,一旦定义,在整个文件甚至整个项目中都可以使用,除非使用#undef取消定义。2.调试困难:由于宏在预处理阶段就被替换,调试时无法看到宏名,只能看到替换后的文本,这给调试带来了一定的困难。1.类型安全:const定义的常量具有明确的类型,编译器会进行类型检查,避免了一些潜在的错误。

m0_63622995的博客 226

C 语言中 const 关键字介绍

  const的使用虽然比较低,但是在笔试中却是一个频率很高的考点,那么如何迅速掌握和理解const呢?在这里给大家介绍一种简单的舍去法。就是看到const的时候,1)首先舍弃const, 得到一个普通的声明;2)然后舍弃const右面的const标志标志以及其它的关键字;3)接下来就是将const右面所有的*和变量用一个新变量代替,单个字符不用被取代,那么这个新变量就是const作用对象。例

baishuwei的专栏 882

c++语言const是什么意思,c++中const关键字

c++中const关键字const是一个C++语言的限定符,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。下面是小编分享的c++中const关键字,一起来看一下吧。define与const的区别1.define作用在预处理时,是简单地字符替换2. const作用在编译时,具有类型检查的功能3. const必须进行初始化常量指针与指针常量#include usi...

weixin_35284593的博客 5075

《C++ const关键字》

const成员函数承诺在函数体内不会修改任何成员变量,而非const成员函数在函数体内可以修改成员变量,这就存在了逻辑上的矛盾:一个承诺不会修改成员变量的函数内正在调用一个可能修改成员变量的函数,这将违反const成员函数的承诺,因为编译器无法确定非const成员函数是否会修改对象的状态。非const对象可以被修改,而const成员函数承诺不会修改对象的任何成员变量,非const对象调用const成员函数,实际上是以一个更受限制的方式(即不修改对象状态)来访问对象的共能。

2202_75924820的博客 1691

C++学习——const关键字

本节总结与const关键字相关的C++学习知识及面试题,一起来看看吧~

mingyuexin235的博客 1255

C++之const关键字详解

const变量 它的值不能被改变,只读的变量。const对象一旦创建后其值就不能再改变,所以const对象必须初始化。初始值可以是任意复杂的表达式: const int bufSize = get_size(); //正确:运行时初始化 const int size = 42; //正确:运行时初始化 const int size; ...

janeqi1987的专栏 3501
上一篇: mingw开发环境中msys及vim的简单配置
下一篇: Ubuntu下创建root账户
glcdw
博客等级 码龄18年 8粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值