C++中const的用法

【c++】——const详解 文章目录1、在.c中const 的用法2、在.cpp中const 的用法3、Const和static修饰的成员3.1const修改成员变量的处理3.2static修饰的成员变量4、int* const p和const int* p区别 首先,我们要来明确一下,什么是const,在我们通常的观念里面,我们会认为下面这个代码是错误的。 const int b = 20; b = 30; 因为const修饰的变量不能作为左值。初始化完成后值不能被修改。 1、在.c中const 的用法 在我之前的一篇博文中, 阅读详情

一、修饰局部变量:

const int n=5;
int const n=5;

这两种写法是一样的,都是表示变量n的值不能被改变了。

需要注意的是,用const修饰变量时,一定要给变量初始化,否则之后就不能再进行赋值了。

const修饰常量静态字符串: 

const char* str="fdsafdsa";

如果没有const的修饰,我们可能会在后面有意无意地写str[4]=’x’这样的语句,这样会导致对只读内存区域的赋值,然后程序会立刻异常终止。

有了const,这个错误就能在程序被编译的时候就立即检查出来,这就是const的好处。让逻辑错误在编译期被发现。

二、修饰全局变量:

全局变量的作用域是整个文件,我们应该尽量避免使用全局变量,因为一旦有一个函数改变了全局变量的值,它也会影响到其他引用这个变量的函数,导致出了bug后很难发现。

如果一定要用全局变量,我们应该尽量的使用const修饰符进行修饰,这样防止不必要的人为修改,使用的方法与局部变量是相同的。

 三、常量指针与指针常量:

     1)、常量指针:

常量指针是指针指向的内容是常量,可以有一下两种定义方式:

const int * n;
int const * n;

     注意: 

①、常量指针说的是不能通过这个指针改变变量的值,但是还是可以通过其他的引用来改变变量的值的。

int a=5;
const int* n=&a;
a=6;

 ②、常量指针可以更改指向,即常量指针可以指向其他的地址。

int a[]={1,2};
int b=6;
const int* p=a;
p++;  //A
p=&b; //B

A、B两行代码都是可行的。 

      1)、指针常量:

 指针常量是指指针本身是个常量,不能再指向其他的地址,写法如下:

int *const n;

指针常量指向的地址不能改变,但是地址中保存的数值是可以改变的 。

int a[]={1,2,3};
int* const p=a;   //p++; ==>不可行,方向不能改变

a[0]=5;   //p所指元素变为5

如果我们将星号读作‘指针’,将const读作‘常量’的话,内容正好符合。

const int*p;  int const * p;是常量指针。  =====>所指元素不能改变

int* const p;是指针常量。                        =====>指向不能改变

     指向常量的常指针:

指针指向的位置不能改变,并且也不能通过这个指针改变变量的值,

但是依然可以通过其他的普通指针改变变量的值。 

const int* const p;

四、修饰函数的参数:

1、防止修改指针指向的内容:

void StringCopy(char *strDestination, const char *strSource);

其中 strSource 是输入参数,strDestination 是输出参数。给 strSource 加上 const 修饰后,如果函数体内的语句试图改动 strSource 的内容,编译器将指出错误。 

2、防止修改指针指向的地址: 

void swap ( int * const p1 , int * const p2 )

指针p1和指针p2指向的地址都不能修改。 

 3、以上两种的结合。

五、修饰函数的返回值:

如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。

 例如函数:

const char * GetString(void);

如下语句将出现编译错误:

char *str = GetString();

 正确的用法是:

const char *str = GetString();

六、修饰函数:

声明一个成员函数的时候用const关键字,是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object)。 

为了声明一个const成员函数, 把const关键字放在函数括号的后面。声明和定义的时候都应该加上const关键字。

 注意:

函数后的const表示这个函数不会修改所处class的member variable(成员变量)。

【error】non-member function cannot have cv-qualifier 

===> 当前的function是non-member function,并不属于任何class,因此会报错。

错误代码: 

#include<iostream>
using namespace std;

void print(int arr[]) const
{
	//arr[0]=3;
	cout<<*arr;	
}

int main()
{
	int a[]={1,2,3};
	print(a);
			
	return 0;
} 

错误类型:

 

 参考:https://blog.youkuaiyun.com/xingjiarong/article/details/47282255

关于C/C++中const关键字作用的一些想法 const 即是英文单词 constant 的缩写,常数、常量(在实际使用中,准确的说,应该是“只读”)的意思。在C语言中,const 用于修饰变量,那么程序员就是希望这个变量变为“常量”,但是这里加了引号,因为对于C语言来说,我们还是可以通过指针间接修改。 阅读详情

相关推荐

买东西c++

题目描述 给定n个物品,每个物品价格为a[i]元,给你m元,请问最多可以购买多少个物品?(只需要买的物品个数尽可能多即可)。 输入格式 第一行两个整数n和m。 第二行n个整数a[i]。 输出格式 一行,表示可以购买的物品个数。 样例输入 5 20 1 5 10 5 8 样例输出 4 问题提示 对于100%的数据,1<=n<=1e5,1<=a[i]<=1e5,0<=m<=1e9。 代码如下: #incl.

FCBerlin的博客 2012

C++ const 详解

2)如果函数名、参数、返回值都相同的const成员函数和非const成员函数是可以构成重载,那么const对象调用const成员函数,非const对象默认调用非const的成员函数。上面定义一个可变的指针,指向一个const 的值,这个是不允许的。value为成员变量,func函数为const成员函数,如果要返回value的引用,这里的func函数返回值必须要加上const,改为,但是,即使用引用,如果只是作为输入用,最好加上const 修饰,这样就不会改变实参的值,如果刻意修改,编译器会报错。

顺其自然~专栏 1万+

C++ const的用法详解

C++作为一种面向对象的经典语言,它是非常的强大,它的每个部分都值得我们去深入了解。 const的基本概念:      const名叫常量限定符,用来限定特定变量,以通知编译器该变量是不可修改的。习惯性的使用const,可以避免在函数中对某些不应修改的变量造成可能的改动。 下面我就const的用法来谈谈: const的用法大致可分为以下几个方面: (1)const修饰

逝无痕——kaidy 3万+

超级详细的 C++ const 全面总结

文章目录花絮一、const 作用二、const 的使用1. 定义常量2. 指针使用 const3. 函数使用 const4. 类相关 const三、将 const 类型转换成非 const 类型四、使用 const 的一些建议五、补充重要说明 花絮 C++ 中的 const 关键字的用法非常灵活,而使用 const 将大大改善程序的健壮性 const 是 C++ 中常见的类型修饰符,常类型是指使用类型修饰符 const 说明的类型,常类型的变量或对象的值是不能被更新的 一、const 作用 1.

qq_41033011的博客 2738

关于MOS管栅极和栅介质(氧化物)的材料选择

大概解释了高K材料作为栅介质的好处,以及为什么会带来好处,同时引出了金属栅的优点,总结了使用高K材料和金属栅的原因。

qq_52054477的博客 1万+

【立创开源】太阳能板充电方案单节3.7v锂电池充电

一直对太阳能板感兴趣,老是感觉充电好麻烦,要是放在那里就可以自己充电多好,所以尝试做了一个太阳能充电板。因为这几天都是阴天,所以测试效果不太好,但是下雨天也是能充电的,但是基本只能维持电量不掉,电压差不多4.2v以上,电流只有2mA。中午出太阳的时候,隔着玻璃放在太阳下测试,电流有12mA以上。能充起一点点电。等大晴天看一看能不能达到卖家说50mA。┗( T﹏T )┛感觉达不到。这个东西只能当一个玩具(;′⌒`)。不过如果汽车上一些行车记录仪加一个这个,汽车经常在太阳下停车,可能再也不用充电了。

贾saisai的博客 1万+

C++ const用法总结

`const`是constant的简写,是C++中极为常见且重要的关键字,主要功能是设置某些参数不可修改,今天对其用法进行总结记录。

a1367666195的博客 8173

labview的TDMS文件读写

本文先介绍TDMS概念和文件结构,然后介绍VI如何使用,最后分析一个labview的自带范例

观则明的博客 1万+

C++中const用法总结

C++中const的用法 1. 使用const修饰变量 1.1. 使用const 修饰普通的变量 const int a=10; 表示a这个int型变量将不可更改。 如:a=3;这样将会报错。 1.2. 使用const修饰指针变量 const修饰指针变量有3种情况: const 修饰指针指向的内容,则内容为不可变量。 const 修饰指针,则指针为不可变量。 const 修饰指针和指针指向的内...

k5722166的博客 7860

MDIO接口协议与其详解——单片机

在单片机领域,通过MDIO接口可以与外部设备进行通信,实现对设备的控制和数据的读写。通过本文的介绍,你可以了解到MDIO接口协议的原理和使用方法,并参考源代码示例进行实际的开发和应用。具体的初始化方法与单片机的型号和开发环境有关,可以参考相应的单片机手册和开发工具的文档。(1)发送读取命令:向MDIO线发送读取命令,通常是发送一个特定的控制字节,用于指示要读取的寄存器地址。(1)发送写入命令:向MDIO线发送写入命令,通常是发送一个特定的控制字节,用于指示要写入的寄存器地址。二、MDIO接口协议使用方法。

web_class282的博客 2626

【乐企】开票控制服务

例子:企业信息初始化。

九七的博客 456

C++ const用法

C++ const用法 尽可能使用const   C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。 1.const 修饰成员变量 #include&lt;iostream&gt; using namespace std; int main() { ...

qq_36310758的博客 1467

UG\NX二次开发 获取三平面交点

//如果返回值不为0 则此三个面没交点 int three_faces_point(tag_t tagFace1, tag_t tagFace2, tag_t tagFace3, double *dou_x, double *dou_y, double *dou_z)

王牌飞行员_里海的博客 675

C++ const 用法全面总结与深度解析

展开代码语言:TXT自动换行AI代码解释const├── 变量修饰│ ├── 基本类型常量│ ├── 自定义类型常量│ └── 全局/局部常量├── 指针修饰│ ├── 指向常量的指针 (const T*)│ ├── 常量指针 (T* const)│ └── 指向常量的常量指针 (const T* const)├── 引用修饰 (const T&)├── 函数相关│ ├── 参数修饰 (const T, const T*, const T&)

2501_93950931的博客 588

2026年数学建模国赛论文排版规范:Word与LaTeX终极对比及模板

提前演练:不要等到比赛开始才第一次使用排版工具。至少在赛前一个月完成1-2篇模拟论文的全流程排版练习。建立检查清单:基于国赛规范制定排版检查清单,在提交前逐项核对——公式编号连续?图表引用准确?参考文献完整?页数不超限?善用模板但不止于模板:模板提供的是起点而非终点。根据自身需求调整宏包配置和样式参数,理解每一行配置的含义。关注评审体验:从评委的视角审视论文——重点内容是否突出?逻辑结构是否清晰?视觉层次是否合理?备份与容错:无论使用何种工具,建立多级备份机制。本地、云端、U盘各存一份,且定期保存历史版本。

YOLO 210

Vue - 最新详细实现滑块拖动拼图验证,网站登录验证滑块验证功能,拖动滑块到图片缺口的位置即为成功,滑块验证安全检测(详细示例代码,一键复制运行)

您一定见过很多系统都“配备”了滑块验证、拼图验证、找不同等,本质上都是为了验证登录系统的是人还是机器(代码),如下图所示效果: 您打开项目根目录,终端执行如下命令:拼图式拖动滑块验证 验证拖动滑块验证,滑动拼图/图片点选验证 接下来,在中加入以下代码: 如下图所示: 更多配置示例和参数详见官方文档,以下便是如上效果图的代码:.........

🏆 前端领域优质创作者 1万+

c++中const的用法

const在c语言和c++的使用是不同的 在c语言中,const修饰的变量叫常变量,在编译阶段编译器会检查常变量有没有做左值,剩下的和普通变量相同,具体用法可参考小编的另一篇博客 — —const的用法。 在c++中,const用法有以下几点需要注意: 1、const修饰的变量叫常量,定义时一定要初始化,因为在编译阶段编译器会把用到常量的地方替换成常量初始化的值,在...

IT_happy_的博客 4575

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

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

C++系列-const所有用法总结

C++系列-const所有用法总结

weixin_48668114的博客 1327

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++中 const的用法

const”在C++中用来修饰一个变量变为常量,本篇文章我们来介绍一下const的具体用法。

2301_79944784的博客 3577

pscad IEEE标准系统搭建说明

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

C++ 中 const 的基本用法

C++ 中 const 的基本用法 基本用法: const限定符用来处理符号常量,比如在程序中输入以下代码: const int Months=12; 这样就可以在程序中用Months来替代12(12可以代表的含义有很多,使用Months可以指出12的含义是什么) 特点: 常量一旦被初始化之后,其值固定,不被允许修改 由于常量不被允许修改,所以应当在声明时对const进行初始化,以下代码会报错: const int Months; Months=12; const和def

weixin_48394156的博客 315

C++必看:关于const关键字用法的总结

C++ const用法总结 const关键字在C++中用于限制变量修改,增强代码安全性和可读性。主要用法包括: 基础用法: 常量声明:const int x = 10; 指针常量:int* const ptr(指针不可变) 常量指针:const int* ptr(内容不可变) 函数参数: 值传递:void func(const int x)(限制内部修改) 引用传递:void func(const int& x)(避免拷贝且保护数据) 指针传递:void func(const int* x)(保护指

Andytoe的博客 1351

C++ const用法 尽可能使用const

转载:https://www.cnblogs.com/xudong-bupt/p/3509567.html C++ const用法 尽可能使用const   C++const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。 1.const 修饰成员变量 ...

Rxiang12的博客 401
上一篇: 第五章 字符串专题 ---------------- 字符串匹配(三)----后缀数组算法
下一篇: 【char* 字符指针的用法】及【输出NULL的问题】
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值