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

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

3天内不再提示

C语言const关键字详解

CHANBAEK 来源:吾爱单片机 作者:echigh 2023-04-15 15:47 次阅读

const我平时没咋用过,最近在一份代码中配置外设寄存器值的数组定义上看到用了这个,因此进行一下简单的入门学习。 在本文最后1点给出const在配置外设初始默认寄存器的用法

  1. const定义的是变量,不是常量。 只是其值在初始化后就不允许再改变,即const变量为只读变量
  2. 注意以下为以讹传讹的错误结论:定义数组时其长度必须是常量,因此不允许使用const变量。

事实是不同的运行环境结论是不一样的:

(1)我试验在arm的cortex m0好的很,在cortex m0平台上(stm32g031单片机)用const变量来定义数组长度一点问题都没有

(2)而在windows平台上面试验,const变量的确不能用来定义数组长度,编译阶段就会报错

另外,虽然结论是错误的,但因为在有的平台上的确这个结论是成立的,因此为了代码统一规范,最好就遵循不要用const变量来定义数组长度的规则

3.定义const变量时,const和具体数据类型位置可以互换,没有区别,但一般是把const放前面:

(1)一般的定义方法

const  int  a = 10;

(2)const和int位置互换,和上面的定义含义是一样的

int  const  a = 10;

4.const 和 define 的区别

(1)const定义的是变量,define定义的是常量

(2)#define在预编译阶段就展开了,不占用内存,机器只会给变量分配内存,而const定义的是变量,是占用内存的

5.定义一个const数组的方法,用来给外设做初始默认寄存器配置,该数据里面元素的数据类型是结构体

#define SOMEDEVICE_REG_CONFIG_NUM_REGS 16


typedef struct
{
  unsigned char address;    /* 8-bit register address */
  unsigned char value;    /* 8-bit register data */
} somedevice_register_t;


somedevice_register_t const somedevice_registers[SOMEDEVICE_REG_CONFIG_NUM_REGS] =
{
  { 0x00, 0x11 },    
  { 0x01, 0x36 },
  { 0x02, 0x75 },
  { 0x03, 0x27 },
  { 0x04, 0x38 },
  { 0x05, 0x1F },    
  { 0x06, 0x25 },
  { 0x07, 0x88 },
  { 0x08, 0x46 },
  { 0x09, 0x29 },
  { 0x0a, 0x03 },
  { 0x0b, 0x01 },
  { 0x0c, 0x40 },
  { 0x0d, 0x11 },     
  { 0x0e, 0x31 },
  { 0x0f, 0x45 },
};
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117746
  • C语言
    +关注

    关注

    180

    文章

    7533

    浏览量

    128790
  • 变量
    +关注

    关注

    0

    文章

    596

    浏览量

    28112
  • 数组
    +关注

    关注

    1

    文章

    409

    浏览量

    25595
  • CONST
    +关注

    关注

    0

    文章

    43

    浏览量

    8004
收藏 人收藏

    评论

    相关推荐

    C语言关键字const的几种用法

    本期来讲解一个C语言关键字——const
    发表于 06-21 11:05 1025次阅读
    C<b class='flag-5'>语言</b><b class='flag-5'>关键字</b><b class='flag-5'>const</b>的几种用法

    DSP编程技巧之17---非常“关键”的关键字

    什么是“关键字”?关键字就是已被C语言本身使用,不能作其它用途使用的,例如关键字不能用作变量名
    发表于 08-20 11:38

    C语言关键字中static,volatile,const,extern,return含义及作用?

    C语言关键字中static,volatile,const,extern,return含义及作用?static 函数分为内部函数和外部函数当一个源程序由多个源文件组成时,
    发表于 09-15 20:18

    嵌入式软件编程中关键字的用法和原理

    青岛职业技术学院刘浩山东省文登市泽头镇***张斌引言计算机编程语言关键字就好比是它的灵魂,只有深入理解了它们的含义才能编写出优秀的代码。C语言以其简洁、高效和强大等特性成为嵌入式软件
    发表于 06-20 07:37

    【视频】C语言知识免费视频教程第2集-C语言关键字-常量-变量(已更新到21集,观看链接已附上)

    语言相关的问题,都可以在帖子下面讨论。C语言教程第一集:认识C语言C
    发表于 03-04 13:24

    【每日一知识点】C语言const详解

    本帖最后由 张飞电子学院蔡琰 于 2021-3-29 11:01 编辑 C语言const关键字是constant的缩写,是恒定不变的意思。通常翻译为常量、常数等,我们一看到
    发表于 03-29 10:53

    【视频】C语言知识免费视频教程-C语言关键字-const-连载视频第6集(视频持续更新……)

    单片机C语言相关的问题,都可以在帖子下面讨论。C语言教程第一集:认识C语言
    发表于 04-06 09:44

    【视频】C语言知识免费视频教程-C语言关键字_extern-连载视频第9集(视频持续更新……)

    单片机C语言相关的问题,都可以在帖子下面讨论。C语言教程第一集:认识C语言
    发表于 04-26 14:04

    【视频】C语言知识免费视频教程-C语言关键字_sizeof-连载视频第11集(视频持续更新……)

    语言教程第二集:C语言关键字-常量-变量C语言教程第三集:C
    发表于 05-20 09:10

    C语言volatile关键字详解 精选资料分享

    1.volatile和什么有关百度翻译是这样子翻译volatile的:图1-1 百度翻译volatile截图volatile属于C语言关键字,《C Primer Puls》 是这样解
    发表于 07-22 07:20

    C语言volatile关键字之间有什么关系?

    C语言volatile关键字之间有什么关系?
    发表于 11-11 07:01

    嵌入式程序员常见的const、static、volatile关键字

    嵌入式程序员const、static、volatile三个关键字的朴素认识摘要:在C语言程序编写中,const、static
    发表于 12-21 06:08

    C语言关键字static的作用是什么

    C语言关键字static的作用是什么?用预处理指令#define 声明一个函数,输入天数得到有多少秒?
    发表于 12-24 06:53

    C++与C的const关键字有何差别?

    C++与C中的const关键字有何差别?
    的头像 发表于 02-03 14:51 1606次阅读

    const关键字应用总结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性
    的头像 发表于 05-26 09:06 368次阅读