const关键字的用法

C/C++ 中 const 关键字用法总结 首先,来看看const的基本含义。在 C/C++ 语言中,const关键字是一种修饰符。所谓“修饰符”,就是在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码。就 const 修饰符而言,它用来告诉编译器,被修饰的这些东西,具有只读的特点。在编译的过程中,一旦我们的代码试图去改变这些东西,编译器就应该给出错误提示。 所以,const修饰符的作用主要是利用编... 阅读详情

1 const修饰变量;

* 在C语言中const修饰的变量是只读的,其本质还是变量,所以可以使用指针将其变量的值改变。

* const修饰的变量会在内存占用空间

* 本质上const只对编译器有用,在运行时无用

实例:

int main(int argc, char *argv[])
{
   const int va=10;
           printf("va = %d\n",va);
   int* p=&va;
   *p=100;
   printf("new va =%d\n",va);
    return 0;
}
运行结果:

va=10;

new va=100;

2 const修饰数组

 * 在C语言中const修饰的数组是只读的

 * const修饰的数组空间不可被改变

实例:

int main(int argc, char *argv[])
{
   const int array[]={1,2,3,4,5,6};
           int *p=array;
  for(int i=0;i<5;i++)
      p[i]=5-i;
  for(int j=0;j<5;j++)
   printf("new array =%d\n",array[j]);
    return 0;
}

输出:5 4 3 2 1

3 const修饰的指针

* const int* p;       //p可变,p指向的内容不可变

* int const* p;       //p可变,p指向的内容不可变

* int*const p;       //p不可变,p指向的内容可变

* const int*const p; //p和p指向的内容都不可变

口诀:左数右指---->当const出现在*的左边,则指针指向的数据不可以被改变,当const出现在*的右边,则指针指本身不可改变,(即指针指向的地址不可以被改变);

实例:

T1 const int* p;  

int main(int argc, char *argv[])
{
    int v_a=10;
    int v_b=100;
    const int *p=&v_a;
    *p=100;
    printf("v_a=%d\n",v_a);
    return 0;
}
这里试图用*p改变p所指向地址的值,则编译无法通过;

int main(int argc, char *argv[])
{
    int v_a=10;
    int v_b=100;
    const int *p=&v_a;

    printf("*p=%d\n",*p);
    p=&v_b;
    printf("*p=%d\n",*p);
    return 0;
}
这里先将const修饰的指针指向v_a,然后又将const修饰的指针指向v_b合法,输出*p=10,*p=100;

T2 int const* p 其功能和const int *p一样;

实例:

int main(int argc, char *argv[])
{
    int v_a=10;
    int v_b=100;
   int  const *p=&v_a;

    printf("*p=%d\n",*p);
    p=&v_b;
    printf("*p=%d\n",*p);
    return 0;
}
这里先将const修饰的指针指向v_a,然后又将const修饰的指针指向v_b合法,输出*p=10,*p=100;
int main(int argc, char *argv[])
{
    int v_a=10;
    int v_b=100;
   int  const *p=&v_a;
    printf("*p=%d\n",*p);
    *p=100;
    return 0;
}
这里试图用*p改变p所指向地址的值,则编译无法通过;

T3 int*const p,const在*的右边,所以本身(指向的地址不可以被改变),但其指向的值可以改变
实例:

int main(int argc, char *argv[])
{
    int v_a=10;
    int v_b=100;
    int*  const p=&v_a;
   // printf("*p=%d\n",*p);
    *p=100;
    printf("*p=%d\n",*p);
    return 0;
}
指向先指向v_a=10,后面改变了指针指向地址的值为100,是合法的;输出100;

实例:

int main(int argc, char *argv[])
{
    int v_a=10;
    int v_b=100;
    int*  const p=&v_a;
    printf("*p=%d\n",*p);
    p=&v_b;
    printf("*p=%d\n",*p);
    return 0;
}
这里试图改变指针指向的地址,编译器无法通过;

T4 

const int*const p; //p和p指向的内容都不可变

实例:

int main(int argc, char *argv[])
{
    int v_a=10;
    int v_b=100;
    const int*  const p=&v_a;
    printf("*p=%d\n",*p);
    *p=v_b;
    return 0;
}
试图修改p指向的地址的值不合法,编译器不通过。

int main(int argc, char *argv[])
{
    int v_a=10;
    int v_b=100;
    const int*  const p=&v_a;
    printf("*p=%d\n",*p);
    p=&v_b;
    return 0;
}


试图改变p指向的地址,不合法,编译器直接不通过。

4 const修饰函数参数和返回值

*const修饰函数参数表示在函数体内不希望改变参数的值

*const修饰函数返回值表示返回值不可改变,多用于返回指针的情形







PlutoSDR驱动安装避坑指南:从设备管理器异常到MATLAB 2023b完美识别 本文是一份详细的PlutoSDR驱动安装与MATLAB 2023b集成排错指南。针对Windows系统下常见的设备管理器异常、驱动兼容性问题,提供了从旧驱动清理、手动指定驱动文件到USB连接稳定性排查的完整解决方案。重点阐述了如何通过离线安装硬件支持包,并利用MATLAB命令进行连接测试与射频信号验证,最终实现设备的完美识别与稳定调用。 阅读详情

相关推荐

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3172

const 关键字详解

const关键字的使用 可以节省空间,避免不必要的内存分配,因为编译器通常不为const常量分配内存空间,而是将它保存在符号表中,这样就没有了存储于读内存的操作,使效率也得以提高; c语言中被const修饰的变量虽然不能直接修改,但是可以间接的通过指针修改,在c++中不能修改被cosnt修饰的变量。 C++编译器对const常量的处理当碰见常量声明时,在符号表中放入常量;编译过程中若发现使用常量则直接以符号表中的值替换。编译过程中若发现对const使用了extern或者&操作符,则给对应的常量分配存

little_rookie__的博客 1万+

广告推荐算法 - 学习笔记(持续更新中)

本篇博客,是我用来记录学习广告推荐算法的一些笔记和总结。王喆:"深度"学习计算广告计算广告系统的核心目标是通过数据、算法和技术,在合适的场景下,将最相关的广告精准推送给目标用户,同时实现广告主媒体平台和用户之间的多方利益最大化。广告主:需求方核心目标:通过精准投放广告,最大化转化(如点击、购买)并控制成本,提升投资回报率(ROI)。关键行为:广告创建,定向设置,预算与出价策略,效果监控媒体平台:供给方核心目标:最大化广告收入,同时保持用户体验以避免用户流失。

qq_39748832的博客 2200

Const关键字 C/C++/Java

const关键字是永恒不变的意思,用它修饰的关键字只具有度的特性,没有办法进行写操作。const常变量的出现可以很好的增加程序的健壮性,防止一些不必要的变量被错误修改引发的程序问题。 在面向的C++中,如果是需要使用#define定义的常数类型量,一般情况下都用const替代,主要原因是define关键字破坏了面向对象域和类型的封装的特性,打破了访问界限。 ...

生活需要深度 4236

ESP32-CAM图传小车:端边协同的嵌入式视觉系统设计

在物联网边缘智能场景中,嵌入式视觉系统需平衡实时性、算力与成本。其核心在于理解图像采集、硬件编码、低延迟传输与分层计算的基本原理——OV2640等CMOS传感器配合JPEG硬件编码可显著降低主控负载;TCP流式协议比HTTP/RTSP更适配资源受限MCU;而‘计算卸载’架构将OpenCV等重负载移至Android端,使ESP32专注实时控制与传输,既发挥FreeRTOS任务调度优势,又规避了PSRAM带宽与内存瓶颈。该模式广泛适用于教育机器人、智能巡检及DIY视觉终端等场景,本文以WiFi图传坦克小车为载体

weixin_42524864的博客 374

Visual Studio 6.0 镜像下载全指南:从企业版到中文版

本文提供Visual Studio 6.0企业版和中文版的镜像下载全指南,包括详细版本解析、已验证的下载链接及校验信息。针对现代系统的安装技巧和兼容性处理方案,帮助开发者高效获取并运行这一经典开发工具,特别适合维护遗留系统的专业人员。

weixin_33712987的博客 1090

深入解析 const 关键字:指针、参数、返回值和类成员函数

在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。使用const有以下好处:编译器的静态检查:const 可以让编译器在编译时进行静态检查,确保不会对被声明为 const 的值进行修改。如果尝试修改 const 值,编译器将产生错误或警告。代码可读性和维护性:使用 const 可以清晰地表达代码的语义,指出某个值不会被修改。可以提高代码的可读性,并且在维护代码时能够更好地理解和推理代码的含义。防止意外修改:通过使用 const,可以避免在代码中意外地修改某个值。特别是当多人协作开

卜及中的博客 4618

告别RXTX:SpringBoot集成jSerialComm实现更现代的串口通信(附完整代码对比)

本文详细介绍了如何从传统的RXTX库迁移到jSerialComm,实现SpringBoot项目中更现代的串口通信。通过对比两种技术的依赖配置、API设计和跨平台支持,展示了jSerialComm在简化部署、提升性能和增强稳定性方面的优势,并提供了完整的代码示例和实战经验。

weixin_42522964的博客 288

const关键字的简介

const关键字的简介 const在C语言中是一个关键字,它的作用是限定一个变量不允许被修改。当一个变量被const限定时,这个变量就是一个只读变量,编译器在内存中开辟一个地方来存放它的值,只过过这个变量由编译器限定不允许被修改。当一个变量被const修饰时虽然它的值不能被修改,但是它和常量是有区别的,常量是存放在内存中的只读区域,这就是常量不能被修改的原因。 下面我们来看看以下几个例子: 1. ...

有点慢的博客 3048

高通camx ThreadManager

m_pCore->AcceptNewJob是将一个Job或者任务插入一个Queue,有一个工作线程循环从Queue中取Job任务执行,执行任务就是回调任务中的callback函数,AcceptNewJob实现。调用AddToPriorityQueue将任务添加到queue任务队列,那么什么时候从这个queue中取任务执行呢?有个线程循环执行DoWork,最终调用checkAndDequeue取任务执行。

GetnextWindow的专栏 438

链接文件及功能安全:S32K3如何将FLASH驱动放到RAM里面、RAM如何实现软件复位数据不丢失操作。

在通过RTD的SDK也好MCAL也好,始终存在一个问题,生成的代码除了看门狗模块,默认都是放在flash里面,按照正常逻辑来看没啥大的问题,思考一个问题:Flash放在0x100的位置,但是此时我们要操作0x100怎么办?那肯定不允许啊,但是将flash的驱动放在RAM里面就可以避免这个问题的产生。Flash的特性:PF0能操作PF1,当然PF1也能操作PF0的,以此类推,只要不操作自身,想怎么玩都可以。这也是一个物理特性吧。

梦想技术家 2310

【C++ 】详解const关键字

在C++编程中,const关键字是一个强大的工具,不仅可以用于定义常量,还能够在函数、类中发挥关键作用。本篇博客将带您深入探索const关键字的魅力,教您如何利用它来提升代码的安全性和可维护性。

Z1tai的博客 1829

PCL 欧式聚类分割【2026最新版】

PCL中欧式聚类提取算法原理详解、代码实现以及一个大自然场景地物分割提取并保存分割结果到本地文件夹的应用案例。

点云侠的博客 40万+

C语言中关于const关键字的用法及详解

C语言中关于const的用法及讲解超详细版!!!

qq_73814284的博客 5525

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

pscad IEEE标准系统搭建说明

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

C/C++中const关键字用法总结

使用const还有很多好处:1) 类型安全:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。2) 可以节省空间,避免不必要的内存分配: const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象宏一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而宏定义的常量在内存中有若干个拷贝。

红军不怕远征难,万水千山只等闲 1495

关键字的用法_C++中const关键字用法总结

作者:Ark2000链接:https://www.cnblogs.com/ark2000/p/11300570.html看完了c++ primer的基础篇,对const还是有点陌生,在这里小小地总结一下吧。1) const与变量在变量的定义前加上const修饰符即可完成const对象的创建。constintval=5;const变量的值不能改变。val=5;//err...

weixin_29547309的博客 143

【每日一题】系列之《C++中const关键字的用法》

公众号:阿Q技术站

qq_44630255的博客 1096

C++ const关键字用法及拓展

C++ const关键字用法及拓展

Warren++的博客 906

C语言丨const关键字的用法详解

这篇文章主要对C语言中const关键字的用法进行了详细的分析介绍,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 什么是const? const 在实际编程中用得并不多,const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。 说 const 定义的是变量,但又相当于常量;说它定义的是常量,但又有变量的属性,所以叫常变量。用 const 定义常变量的方法很简单,就在通常定义变量时前面..

Hsuesh的博客 404

【C++】C++ const关键字用法总结

C++ const 关键字用法总结 概述 const是constant的缩写,本意是不变的,不易改变的意思。在C++中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。 C++ const允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程的过程中有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。 const关键字的作用 序号 作用 说明 代码示例 1 可定义const常量 定义为常量的变量将不能被更改,只能读取

weixin_45781252的博客 547

C语言中const关键字用法详解

C语言中const关键字用法详解 引:什么是const? const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。 如果一个变量被const修饰,那么它的值就不能再被改变,那么和#define对比,const修饰符有以下的优点: 1、预编译指令只是对值进行简单的替换,不能进行类型检查。 2、可以保护被修饰的东西,防止意外修改,增强程序的健壮性。 3、编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为

lllhhh0220的博客 856

C++关键字 const 用法

文章目录1 const 基本用法1.1 const与基本类型数据1.2 const与指针类型1.3 const与引用2 const 其他用法 注:转载请标明原文出处链接:https://xiongyiming.blog.youkuaiyun.com/article/details/103816933 1 const 基本用法 1.1 const与基本类型数据 1.2 const与指针类型 注:...

TechArtisan6的博客 710

C++中const关键字的用法

C++中const关键字的使用方法和注意问题。

六轱辘的专栏 563

const关键字用法

目录简介优点用法1.修饰变量2.修饰指针变量3.修饰函数形参 简介 摘自百度百科:const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。 const英文中意为常量,但在ANSI C中,const修...

肥宅快乐博客 726
上一篇: 基于tiny6410的移动物体检测资料
下一篇: 柔性数组
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值