0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样去使用C语言中的const关键字呢

冬至配饺子 来源:最后一个bug 作者:bug菌 2022-08-12 09:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

/***const是什么?***/

C语言中const是一个关键字,const字面的意思是“恒定的,不变的”,其主要的作用是const定义的变量,但又相当于常量,其值不允许被改变。

值得注意的是:

1)const修饰的变量的
生存周期为其定义到整个程序结束运行,不管是全局变量还是局部变量。

2)对于const变量在
初始化的时候就需要进行按我们的期望进行赋值,其他时候修改则会造成语法错误。

3)对于
const特性跟编译器相关,不过大部分是一致的!

4)const是在
编译的时候编译器进行的一些处理!

/***如何使用const?***/

一、C语言中const修饰的变量占用内存

我们先看加两个例子:

下图C语言

pYYBAGL1qK6AQjmdAABt1-vJyvw190.png

下图C++语言

poYBAGL1qMSAWll7AAB4Amh5CzA508.png

我们编译会发现C语言无法通过,主要是原因是我们定义const变量n并不是常量所以编译无法通过。所以用const定义的变量仅仅为只读变量,同样需要占用内存。而C++可以通过,而它相对比较复杂,这里不在展开描述!

二、const注释函数参数和返回值

我们通过修饰函数形参来保护传入的参数不被意外修改,有利于程序稳定性。我们一般不会用const修饰值传递,因为值传递是一个赋值的过程,在函数内部修改不会改变其值,所以不是很有意义;一般用const注释指针传递,防止内部修改导致外部变化,比如:void sFuc(const char *des,const char *src);这样就防止了des和src值的意外修改

修饰返回值一般用得比较少,采用const修饰返回值一般也不用于值传递,而是多用于指针传递!


三、const变量能通过指针修改吗?

我们通过下面两个例子:

pYYBAGL1qOGASIW4AAExAvqRXnQ540.png

我们会发现两者的区别const一个注释的全局变量一个注释的局部变量,我们编译都能通过,不过使用全部变量的程序运行会报段错误,而局部变量的能够过得正确结果。对于通过指针修改const的值是一种与编译器有关的行为,我们认为可以用指针修改堆栈上的局部变量,而全部变量const修饰以后为只读区域,如果程序访问则会导致异常!

四、const注释指针的终极奥义

我们把const处把右侧的语句括起来,去掉数据类型,括起来的内容是什么就是什么不能被修改。

如:

1)const int *pVar=&addr;根据上面的方法括起来的内容(* pVar)表示的是指针的内容,那么不能执行*pVar内容的修改,比如说*pVar=123;则编译会报错。不过可以修改指针的地址,比如pVar = &addr2;这样是可以修改的并且我们再次访问pVar的内容则变成了addr2的内容了。

2)同样intconst *pVar=&addr;跟上面是一样的处理办法。

3)int* const pVar=&addr;这个刚刚与前面的相反,其括起来的为(pVar)所以值能使用*pVar作为左值,不能修改pVar所指向的地址。

4)对于constint* constpVar=&addr则都不可进行修改!只能作为右值可读。

5)我们同样可以扩展下对于二级指针

constchar*const*constp全部限定为只读,都不可以改写,如果一个开放对应的就可以被修改!


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20147

    浏览量

    328838
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144616
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51082
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Temu跨境电商按关键字搜索Temu商品API的应用及接口请求示例

    Temu跨境电商按关键字搜索Temu商品API的应用及接口请求示例 Temu跨境电商按关键字搜索Temu商品API的应用场景 Temu跨境电商平台按关键字搜索Temu商品API的主要应用场景包括但不
    的头像 发表于 11-29 15:08 92次阅读

    C语言的编程技巧

    、_Alignas关键字‌:C11标准引入了_Alignas关键字,用于显式指定类型的对齐方式,优化内存访问效率。 ‌5、_Generic关键字‌:
    发表于 11-27 06:46

    哪些场合会用到volatile关键字?

    当你理解 volatile关键字的含义之后,你就能明白,其实很多场合都能用到 volatile关键字。 1.全局变量单片机开发,难免会用到全局变量。一些初级工程师,更是全局变量满天飞。这种情况下
    发表于 11-25 08:19

    天眼查平台关键字搜索企业数据API接口技术指南

    ​ 一、接口概述 天眼查提供的企业搜索API接口,支持通过关键字查询企业工商信息、经营状态等核心数据。该接口采用RESTful架构,返回JSON格式数据。 二、接口认证 调用需使用API密钥认证
    的头像 发表于 11-21 11:48 387次阅读
    天眼查平台<b class='flag-5'>关键字</b>搜索企业数据API接口技术指南

    1688平台关键字搜索商品API接口技术实践指南

    /com.alibaba.product/alibaba.product.search/ 必备参数: { "keyword": "手机", // 搜索关键字 "pageNo": 1, // 页码 "pageSize": 20, // 每页数量 "access_token": "xxx" // 认证令牌 } 二、响应
    的头像 发表于 11-11 14:22 255次阅读
    1688平台<b class='flag-5'>关键字</b>搜索商品API接口技术实践指南

    亚马逊平台根据关键字搜索商品API接口

    ​  在电商开发中,集成亚马逊平台的商品搜索功能是常见需求。通过亚马逊的Product Advertising API(PAAPI),开发者可以根据关键字高效检索商品信息。本技术帖将逐步介绍如何调用
    的头像 发表于 11-05 15:00 119次阅读
    亚马逊平台根据<b class='flag-5'>关键字</b>搜索商品API接口

    亚马逊 SP-API 深度开发:关键字搜索接口的购物意图挖掘与合规竞品分析

    本文深度解析亚马逊SP-API关键字搜索接口的合规调用与商业应用,涵盖意图识别、竞品分析、性能优化全链路。通过COSMO算法解析用户购物意图,结合合规技术方案提升关键词转化率,助力卖家实现数据驱动决策,安全高效优化运营。
    的头像 发表于 10-17 14:59 344次阅读

    阿里巴巴国际站关键字搜索 API 实战:从多条件筛选到商品列表高效获客

    ​​在跨境电商数据采集场景中,通过关键字精准搜索商品列表是基础且核心的需求。本文将聚焦阿里巴巴国际站的关键字搜索接口,详细介绍如何构建多条件搜索请求、处理分页数据、解析商品列表信息,并提供可直接复用的 Python 实现方案,帮助开发者快速搭建稳定高效的商品搜索功能。
    的头像 发表于 08-20 09:22 682次阅读
    阿里巴巴国际站<b class='flag-5'>关键字</b>搜索 API 实战:从多条件筛选到商品列表高效获客

    micro 关键字搜索全覆盖商品,并通过 API 接口提供实时数据

    micro 关键字搜索全覆盖商品”并通过 API 接口提供实时数据
    的头像 发表于 07-13 10:13 683次阅读

    static在单片机中的妙用

    不要从字面意思误以为关键字 static 很安静,其实它一点都不安静。这个关键字C 语言里主要有两个作用,下面我们就来介绍一下 C
    发表于 04-02 13:50 1次下载

    单片机编程关键字之volatile

    它的存在。也有很多人知道它的存在,根本没用过,我对它有种“杨家有女初长成, 养在深闺无人识”的感觉volatile 关键字到底是什么意思,怎么用1、volat
    发表于 04-02 13:47 2次下载

    带你在单片机编程中熟练使用const(可下载)

    C 语言关键字const 举足轻重,我们今天就深度聊一聊 const 的定义和实际应用,让它 不再是迷
    发表于 04-01 14:18 3次下载

    const定义的是不是常量

    C语言是如何定义常量的?const定义的算不算是常量? 常见的有这么几种方式。 首先就是宏定义,使用 define 来定义。 宏的特点就是在预处理的时候被替换,比如这个地方的 SIZE,预处理后就会
    的头像 发表于 01-14 11:35 643次阅读

    EE-62:在C语言中访问短内存

    电子发烧友网站提供《EE-62:在C语言中访问短内存.pdf》资料免费下载
    发表于 01-07 14:02 0次下载
    EE-62:在<b class='flag-5'>C</b><b class='flag-5'>语言中</b>访问短<b class='flag-5'>字</b>内存

    EE-128:C语言中的DSP:从C调用汇编类成员函数

    电子发烧友网站提供《EE-128:C语言中的DSP:从C调用汇编类成员函数.pdf》资料免费下载
    发表于 01-07 13:48 0次下载
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>语言中</b>的DSP:从<b class='flag-5'>C</b>调用汇编类成员函数