c++之const常量与指针

const常量和指针 以及分别在C和C++中的理解 const 关键字在 C/C++ 中用途广泛,可以有效提高代码的安全性和可维护性。通过合理使用 const,可以明确表达设计意图,减少潜在的错误。常量性const是“只读建议”,可通过指针绕过。const是强制约束,违反会触发编译器错误。编译期优化C++ 允许const变量参与编译期计算(如模板元编程)。C 的const变量通常需要运行时求值。作用域与链接性C++ 的const全局变量默认仅在当前文件可见。C 的const全局变量默认可跨文件访问。与#define的关系C++ 推荐用。 阅读详情

    当需要某个变量的值不能被改变时,可以用const关键字修饰变量的类型。如const int bufSize=1024。这时候bufSize就是一个常量,所有试图修改bufSize值的行为都是不被允许的。而且编译器在编译的过程中,会把用到bufSize变量的地方全部替换为1024,下面总结一下const关键字的一些性质和应用场景。

1、const修饰的对象必须被初始化

const int num;    //错误,const常量必须初始化
const int num=5;  //正确

2、const修饰的对象是常量,初始化后便无法修改

const int num=5;
num=10;    //错误

3、const int num=5与int const num=5,写法不同,但效果一样

4、const修饰的指针是常量指针,不能用于修改其所指对象的值。但是指针的指向可以变化。

char c='C';
char a = 'A';
const char *p = &a;
*p = 'B';    //错误,无法修改a的值为'B';
p=&c;    //正确

5、const可用于修饰函数形参,防止传入的引用或者指针 被函数内部修改

#include <iostream>
 
using namespace std;
 
int sub(const int &a,const int &b)    //修饰形参
{
    //a=100;    //错误,不可修改形参的值

	int result = a + b;
 
	return result;
}
 
int main()
{
	int num_a = 10;
	int num_b = 12;
	cout << sub(num_a, num_b) << endl;    //输出22
 
	return 0;
}

 

C++:18---const关键字(附常量指针、指针常量、常量指针常量) 一、const变量的一些基本特点①const修饰的变量不能被修改const int a=10; a=20;//错误 ②因为const修饰的变量不能被修改,所以必须被初始化int a=10... 阅读详情

相关推荐

地平线Matrix-Client实战:3分钟搞定摄像头调试与3D视图配置(附避坑指南)

本文详细介绍了地平线Matrix-Client在摄像头调试与3D视图配置中的实战技巧,包括环境准备、核心功能快速上手、高阶调试与性能优化等。通过3分钟快速配置指南和避坑建议,帮助开发者高效完成智能视觉系统开发,特别适用于自动驾驶和机器人视觉领域。

w7x8y9z的博客 266

C++中const指针

如何区分常量指针和指向常量的指针呢? 一个简单的方法:从右向左读。 例: const int p; // p是一个int型常量 这个很简单 const int *p; // p是一个指针,指向int型常量。即p是一个指向int型常量的指针。 int * const p; // p是一个指向int的const指针 const int * const p; // p是一个指向int型常量...

weixin_43778462的博客 1688

KUKA 虚拟调试实战——打通Simpro4.1与OfficeLite8.6的通信与实时控制链路

本文详细介绍了KUKA虚拟调试实战,重点解析如何打通Simpro4.1与OfficeLite8.6的通信与实时控制链路。通过环境搭建、权限配置、机器人型号匹配等关键步骤,帮助工程师高效完成机器人轨迹规划和PLC联锁逻辑验证,大幅降低真机调试风险。文章还提供了典型报错解决方案和实时控制优化技巧,适用于工业机器人仿真与培训场景。

weixin_30907935的博客 444

const修饰的常量 不能被直接修改 但是可以通过指针进行间接修改

大家都知道如下代码中,被const限定的a是不可以被直接修改的 void main() { const int a = 3; a=1; }   在C++中const修饰的常量,不能被直接修改,但是可以通过指针进行间接修改 来看下面的例子: 运行后输出 5 3 单步执行,利用内存窗口进行...

weixin_30708329的博客 449

Keil5安装教程(保姆级)Keil5mdk安装步骤

6、复制生成的激活码,粘贴在New License ID Code处,点击Add LIC,即可成功激活mdk,显示mdk的使用期限。6、复制生成的激活码,粘贴在New License ID Code处,点击Add LIC,即可成功激活C51,显示mdk的使用期限;3、在安装文件中点击keygen.exe文件,粘贴复制过的CID,选择Target为C51,点击Generate,生成激活码;4、在弹出的界面中会自动安装在安装keil的路径,点击“Next”进行后续安装,安装完成后,点击“Finish”。

m6886258的博客 9万+

电影票购票小程序搭建(源码部署)

答:为用户提供便捷的购票方式,包括授权登录、个性化推荐、在线选座、订单管理等功能,同时在界面设计上注重用户友好性,简化用户的购票流程。答:通过展示电影院的优惠活动和票价信息,同时提供电影推荐功能,根据用户的历史购票记录和电影评分推荐个性化的电影列表,吸引用户购票。编写页面逻辑代码:使用JavaScript编写小程序页面的逻辑代码,实现电影列表的获取、电影详情的展示、座位选择的逻辑等。设计小程序界面:使用WXML和WXSS编写小程序的界面代码,实现电影列表的展示、电影详情的样式、座位选择页面的布局等。

2301_79072569的博客 2068

C/C++:const常量真的可以用指针修改吗

C/C++:const常量真的可以用指针修改吗 常量在程序运行前就已经存在,并在程序运行时加载到常量区。 若定义常量a并赋值,之后使用指针p修改a的值。此时即使对a做任何计算,a的值还是未修改的值,但是*p的值会是修改后的值。 看这段代码,首先定义一个常量a等于5。再使用p指针指向a,并修改值。那么最后输出a结果如何呢? int main() { const int a = 5; // 定义常量a = 5 int *p = (int*)&a; // 指针指向a,

韩小非的博客 1540

Seafile搭建以及onlyoffice在线办公

部署seafile docker-compose.yml 如下: 参考此篇文章 version: '2.0' services: db: image: mariadb:10.1 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=db_dev # mysql root的密码,同时修改 seafile的DB_ROOT_PASSWD与这个一致 - MYSQL_LOG_CONSOLE

dwdcth的专栏 4656

C++语言里const_cast 在可变与不可变类型之间转换一、常量指针被转化成非常量指针,并且仍然指向原来的对象;

在C语言里强制类型转换的方法非常简单,只要在要转换的变量前用括号确定要转换的类型即可,如要将一个double型的变量强制转换为int类型,代码如下: double x = 3.14; int y = (int)x; 另外,还可有更高级的转换,如把int *类型的变量转换为int ,代码如下: int x = 20; int *p = &x; int y = (int)p; 在C++语言里为...

二进制模----细微行动改变影响世界 580

手把手排查IOMMU映射故障:从内核日志到硬件寄存器调试全指南

本文详细解析了IOMMU映射故障的排查方法,从内核日志分析到硬件寄存器调试,提供了一套完整的诊断流程。涵盖AMD和Intel平台的特定调试技巧,包括ATS协商失败、DMA传输错误等常见问题的解决方案,并介绍了高级调试工具链的搭建与性能优化策略。

weixin_42666036的博客 353

华为OD机试双机位C卷-分披萨 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【分披萨】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试 - 分披萨。

qq_45776114的博客 1396

C++ 指针和const 常量指针 指针常量

const int * pn = # // 指针指向一个常量int * const finger = # //指针本身为常量上面代码中,finger只能指向num,但允许finger修改num的值,不能使用pn来修改num的值,但允许pn指向另一个位置!简而言之,finger和*pn是const,但*finger和pn不是。其中,ph只能指向height,*ph也不能用来修改height的值!参考C++ Primer Plus。

m0_53911267的博客 2051

中文核心:swin transformer 农作物病虫害识别 完整代码数据

中文核心:swin transformer 农作物病虫害识别

939

【C++】指向常量的引用/指针、常量指针、顶层底层const的分析

【C++】指向常量的引用/指针、常量指针、顶层底层const等相关概念的理清和总结。

技术博客 1434

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

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【C/C++】常量指针与指针常量的深入解析与区分(什么是const int * 与 int * const ?)

在【C/C++】的编程中,指针与const关键字的组合常常会引出大部分初学者的困惑(比如我😂),特别是学习到C++ 中的拷贝构造那里如果分不清【常量指针】与【指针常量】之间的含义与区别的话,是相当的难受。所以本文旨在深入解析这两种声明的含义,帮助大家准确的区分它们。

weixin_45031801的博客 2713

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

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

C++基础(五)const、常量指针、常量、指向常量的指针

常量 有些变量,因为程序需要,不能在编程过程中对其进行修改,则用"const"关键字修饰即可,如下: const int iTest = 100;或者 int const iTest = 100; 这称为常量。一经定义后,便不能再修改。以上两种定义都是合法的! const 引用 对于上面的常量,因为其数据不能修改,所以其对应的引用,也要不能修改,这样的引用,则为const 引用,如下: const int& rTest = iTest; 如果定义一个普通的引用指向iTest,例如 i.

叶孤城 2010

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C/C++:常量指针(const Pointer)与指向常量的指针(Pointer to const)

指向常量的指针(Pointer to const)和常量指针(const Pointer)涉及const在指针中的不同用法,是易混淆但非常重要的概念。

凯琳和火龙果的博客 2058

C++ const指针常量与常量指针,const成员函数

记忆法:const 在*左边右边记忆法 常量指针(被指向的对象是常量) 定义:又叫常指针,可以理解为常量的指针,指向的是个常量 关键点: 常量指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改; 常量指针可以被赋值为变量的地址,之所以叫常量指针,是限制了通过这个指针修改变量的值; 指针还可以指向别处,因为指针本身只是个变量,可以指向任意地址; const int *...

yuleidnf的博客 463

C++ 中的 const(指针常量与常量指针)

关键字用于声明常量,表明对象或变量的值不可被修改。它在指针、引用、函数参数和成员函数等场景中有着广泛且灵活的应用,是 C++ 类型系统的重要组成部分。:指针指向一个常量对象,不能通过该指针修改对象的值,但指针本身可以改变(指向其他对象)。指针本身是一个变量(存储内存地址),而它指向的也是一个内存位置。可以修饰指针本身、指针指向的内容,或两者同时修饰。引用本身不能变(必须初始化),因此。没有意义,C++ 不允许这样写。

weixin_50881329的博客 599

【C++基础】常量引用、指针常量与常量指针 ; 顶层const与底层const

一、常量引用 我们用引用作形参往往是为了能修改对象的值,但有时候又用“对const的引用”,如const int& a,作为形参,这样就使得该对象不能被函数修改了,那这样用引用的意义不就没有了,和传值(如int a)作形参不就一样了? 事实上,一方面引用避免了拷贝,对于占用内存大的对象来说,传引用依然比传值会更有效率,所以传引用作形参还是有意义的。另一方面,如果我们不希望被引用绑定的对象被该函数修改,所以我们就会采用“对常量的引用”,简称常量引用,如const int& r = i; 这样引

mrqiuwen的博客 1120

C++中的常量(const):指向常量的指针、常量指针、指向常量的常指针、顶层const、底层const、const引用、常量表达式constexpr、const成员函数、常量对象

了解c++中const的一切

一个搬运知识的笨小孩 1252

c++ 表达式必须包含指向类的指针类型_C++:18const关键字(附常量指针、指针常量、常量指针常量)...

一、const变量的一些基本特点①const修饰的变量不能被修改const int a=10;a=20;//错误②因为const修饰的变量不能被修改,所以必须被初始化int a=10;const int b=a; //正确const int c=10; //正确③const修饰的变量可以赋值给其他值const int a=10;int b=a;//正确④可以有常量引用int a=10;...

weixin_31179927的博客 492

C/C++中常量指针和指针常量 const char */char const */char * const||const char * const/char const * const

常量指针与指针常量 先看C/C++中指针的一般定义: char* ptr; //定义了一个字符型指针变量 那么const出现在char * 之前,在 char 和“ * ”之间以及在char * 之后,有什么区别吗? 当仅有一个const时对应以下三种情况 1. const char * ptr 2. char const * ptr 3. char * const ptr 1. const char * ptr 先看下面的程序示例: #include <iostream> int

a_smart_boy的博客 605

c/c++中const关键字用法,以及如何区分指针常量和常量指针实例

c/c++中const关键字用法,以及如何区分指针常量和常量指针实例

qq_50635297的博客 960

C++:关于常量指针与指针常量,顶层const与底层const的小知识点

最近遇到了关于指针和const的相关问题,阅读了《C++ Primer(5th)》以及网友的博客后总结了一些方法,总结如下。 如有错误,尽情指正。 常量指针与指针常量 首先需要区分常量指针与指针常量,方法是:从右往左,遇到数据类型如"int"读作“整型”,“const”读作“常量”,“ * ”读作指向,例如下面: const int p; //整型常量 const int *p; //指向整型常量的指针(从右往左读) int const *p; //指向常量整型的指针(同上) int *const.

PandaNotPan的博客 729
上一篇: 玩一下linux下线程的分离
下一篇: Qt实现 获取与设置控件的颜色(背景色,边框色,文本色)
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值