0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动

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

3天内不再提示

关键字union的基本定义和使用

CHANBAEK 来源:明解嵌入式 作者:Sharemaker001 2023-04-15 11:18 次阅读

关键字union,又称为联合体、共用体,联合体的声明和结构体类似,但是它的行为方式又和结构体不同,这里的行为方式主要指的是其在内存中的体现,结构体中的成员每一个占据不同的内存空间,而联合体中的所有成员共用的是内存中相同的位置。

简单看下区别:

struct MyStruct 
{
    double a;
    int b;
    char c;
};
struct MyStruct value;
union MyUnion 
{
    double a;
    int b;
    char c;
};
union MyUnion value;

同样是定义变量value; 内存空间占用情况如下:

图片

可以看出,结构体变量中3个成员相当于3个人,每个人必须要住一间屋子,优点是空间包容性强,但是内存空间必须全部分配,不管房子住不住人。 联合体变量3个成员,它们可以共用一间屋子,但是每个屋子同一时间只能容纳一个成员,因此不够包容,成员是互斥的,但是可以大大节省内存空间。

要注意的是,联合体的长度大小为最大的成员的大小,在本例中即value.a的大小。 并不是单指数据类型,若在MyUnion定义了数组char c[10],则此时该联合体变量value大小为10个字节。

以上简单的了解了下union的基本定义,在实际应用中我们一般都使用结构体来定义数据组合而成的结构型变量,而在各数据类型各变量占用空间差不多并且对各变量同时使用要求不高的场合(单从内存使用上)也可以灵活的使用union。

1、变量的初始化

在初始化的时候,只应对一个成员进行初始化即在初始化列表中只有一个初始值。 原因就是联合体的所有成员共用一个首地址,在默认情况下,会将这个初始值初始化给联合体变量的第一个成员。

union MyUnion 
{
    double a;
    int b;
    char c;
};
//为第一个成员初始化
union MyUnion un1 = {5.0f};
//错误初始化,不能为多个成员初始化
union MyUnion un1 = {5.0f, 10};
//对其它位置的成员进行初始化,则可以通过指定初始化方式
union MyUnion un1 = {.b = 10};
//结构体一样,也可以将一个联合体变量作为初始值,直接初始化给同类型的另一个联合体变量
union MyUnion un2 = un1;

2、数据位操作

#include
typedef struct
{
  unsigned char bit0:1;
  unsigned char bit1:1;
  unsigned char bit2:1;
  unsigned char bit3:1;
  unsigned char bit4:1;
  unsigned char bit5:1;
  unsigned char bit6:1;
  unsigned char bit7:1;
}bitValue;
typedef union
{
  unsigned char bytedata;
  bitValue  bitdata; 
}regValue;
int main()
{
  regValue data;
  data.bytedata= 0x5A;
  printf("%d",data.bitdata.bit5);  //读取第6位
  data.bitdata.bit7 = 1;           //修改第8位
  return 0;
}

可以看出,通过访问和修改联合体中的定义bitdata成员,可以间接的访问和修改定义的bytedata的值,这可以用在嵌入式寄存器位操作上。

3、和struct嵌套使用

比如我们分别定义电视和空调的属性:

struct tvFeature    //电视属性
{
   char *logo;     //品牌
   int price;      //价格
   int screensize  //屏幕尺寸  
   int resolution  //分辨率 
}tvFeature;
struct tvFeature tvfeature;


struct airFeature  //空调属性
{
   char *logo; //品牌
   int price;   //价格
   int coldcapacity;//制冷量 
   int hotcapacity;//制热量
}airFeature;
struct airFeature airfeature;

可以看出电视和空调有相同的属性,也有各自特有的属性。 我们可以使用家用电器的数据结构统一定义。 但是这样用统一的数据结构定义电视和空调的变量之间耦合会增加很多,对于tvfeature和airfatureta各自来说用不到的属性也会浪费内存空间。

struct homeappliancesFeature  //电器属性
{
   char *logo; //品牌
   int price;   //价格
   int screensize  //屏幕尺寸  
   int resolution  //分辨率
   int coldcapacity;//制冷量 
   int hotcapacity;//制热量
}homeappliancesFeature;


struct homeappliancesFeature tvfeature;
struct homeappliancesFeature airfature;

因此可以用union来解决问题

struct tvFeature    //电视属性
{
   int screensize  //屏幕尺寸  
   int resolution  //分辨率 
}tvFeature;
struct airFeature  //空调属性
{
   int coldcapacity;//制冷量 
   int hotcapacity;//制热量
}airFeature;


struct homeappliancesFeature  //电器属性
{
   char *logo; //品牌
   long country; //国家
   union
   {
      struct tvFeature tvST;
      struct airFeature airST;
   };
};
struct homeappliancesFeature tvfeature;
struct homeappliancesFeature airfature;

如上我们只需一个结构体,就可以解决电视和空调的属性不同问题; struct tvFeature tvST和struct airFeature airST共用一块内存空间,定义变量时,可以访问各自的特有属性,这样就解决了内存浪费和变量耦合高的问题。

4、数据复制

例如串口数据发送时,可以直接使用数据复制的方式将数据打包发送,不需要将一个4字节的数据额外进行拆分为4个单字节的数据; 反之读取数据时,也可以不用将4个单字节的数据重新通过移位拼接为一个4字节数据。

typedef union
{
  uint8   data8[4];
  uint32  data32;
}dataType;


uint32 sendData = 0x5A5AA5A5;
uint32 receiveData;
dataType commSend;
void main(void)
{
    uint8 commData[128];     
    //数据复制
    commData.data32 = sendData;    
    //发送数据,字节复制,不需要再将commData.data32单独移位拆分
    commData[0]= commSend.data8[0];
    commData[1]= commSend.data8[1];
    commData[2]= commSend.data8[2];
    commData[3]= commSend.data8[3];
      
   //读取数据时,字节复制,不需要再将已经读取到的4个单字节数据拼接 
   receiveData =  commData.data32;  
}

5、分时发送不同帧格式数据

比如需要在同一段通信数据发送逻辑中,针对不同通信协议帧格式进行发送时,就可以这样定义数据结构。

typedef struct 
{ 
   uint8 head;   //帧头格式相同
   union    //中间数据格式不一样
   {
      struct             //payloadType1  
      {
        uint8 cmd;
        uint8 type;
        uint8 data[5];   
        uint8 check;       
      }msgType1;
   
      struct              //payloadType2    
      {
        uint16 cmd;     
        uint8 data[8];   
        uint16 check;       
      }msgType2;  
          
     uint8 data[10];      //payloadType3  
   } payloadType;
   uint8 end;    //帧尾格式相同
}frameType;

By the way:在使用联合体时可以注意这两个点:

1、数据大小端

使用联合体时需要注意数据大小端问题,这个取决于实际的处理器的存储方式。

大端存储就是高字节数据放在低地址。

小端存储就是高字节数据放在高地址.

如下方例子,可以知道使用的处理器的存储方式:

#include
union Un
{
  int i;
  char c;
};
union Un un;
int main()
{
  un.i = 0x11223344;
  if (un.c == 0x11)
  {
    printf("大端\\n");
  }
  else if (un.c == 0x44)
  {
    printf("小端\\n");
  }  
}

2、指针方式访问

由于在一个成员长度不同的联合体里,分配给联合体的内存大小取决于它的最大成员的大小。 如果内部成员的大小相差太大,当存储长度较短的成员时,浪费的空间是相当可观的,在这种情况下,更好的方法是在联合体中存储指向不同成员的指针而不是直接存储成员本身。 所有指针的长度都是相同的,这样能解决内存空间浪费的问题。

#include
typedef struct
{
  unsigned char a;
  int b;
}stValue1;
typedef struct
{
  int c;
  unsigned char d[10];
  double e;
}stValue2;
//联合体成员定义为指针成员
union Un
{
  stValue1 *ptrSt1;
  stValue2 *ptrSt2;
};
int main()
{
  union Un *info;
  info->ptrSt1->a = 5;
  info->ptrSt2->e = 9.7f;
}

总之在实际使用联合体union过程中一句话总结:围绕成员互斥和内存共享这两个核心点去灵活设计你的数据结构。

  • 嵌入式
    +关注

    关注

    4470

    文章

    15925

    浏览量

    273073
  • 内存
    +关注

    关注

    8

    文章

    2154

    浏览量

    71958
  • 关键字
    +关注

    关注

    0

    文章

    15

    浏览量

    6738
  • 结构体
    +关注

    关注

    1

    文章

    80

    浏览量

    10624
  • union
    +关注

    关注

    0

    文章

    6

    浏览量

    4143
收藏 人收藏

    评论

    相关推荐

    在语音交互的过程中用户语音的关键字可以获取到吗?

    在语音交互的过程中用户语音的关键字可以获取到吗?
    发表于 03-10 08:50

    求教,为什么我画PCB的时候,出现【所有记录中均未找到搜索关键字】?

    求教各位,刚学画PCB,为什么画完保存的时候,就提示出现 【所有记录中均未找到搜索关键字】这个错误呢?并且保存不了
    发表于 06-25 11:04

    福田关键字营销公司—外销通

    福田关键字营销公司 随着移动互联网技术的变革提升,(贡保红,热线1,8,1,2,3,9,7,9,1,5,0)商业模式的不断成熟,移动互联网营销开始起到贯穿整个全网营销的重要作用,许多营销手段最终
    发表于 04-04 09:32

    写入FLASH的关键字

    求各位大神,我想写一个数组,放有1024个数,用的是430单片机,RAM肯定放不下,有没有这样一个关键字,直接写入FLASH中,急!!!!!!
    发表于 08-15 22:07

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

    的设计产生预期的结果。C28x的编译器支 持所有的标准C89的关键字,包括const、volatileregister,标准的C99关键字,包括inlinerestrict,以及支持 TI自定义的扩展
    发表于 08-20 11:38

    static 关键字

    static 关键字 浅析
    发表于 01-16 16:55

    labview 如何在TXT文档中从后往前查找关键字

    labview 如何在TXT文档中从后往前查找关键字
    发表于 11-18 11:49

    急,use of undeclared identifier ,不能使用let 关键字

    use of undeclared identifier ,不能使用let 关键字。。。急求 15639918273
    发表于 03-29 17:23

    急!! 求助如何定位存储器的关键字

    的时候都会选择什么样的关键字,是品牌?还是分类?还是直接搜型号?亲们都喜欢在那些平台去搜呢?现在公司急需要定位关键字,非常急,希望大家多帮帮忙,深圳宝安附近的可以请亲吃饭的呢。在此非常感谢亲爱的坛友么。。 非常感谢。
    发表于 06-23 10:00

    CCS2.2下,new关键字的使用

    我用的编译环境是ccs2.2,现在要动态开辟数组,需要用到new关键字,但是编译后,提示不识别new,undefined new,哪位高手告诉下,应该怎么解决,包含什么头文件?还是其他的解决方法?谢谢了!在线等!
    发表于 09-03 16:10

    51编程中位域bit关键字

    在keil C51中,提供了bdata关键字,用法:bdata Flag=0x00;***it Flag_0=Flag^0;***it Flag_1=Flag^1;***it Flag_2=Flag
    发表于 09-13 15:13

    C语言关键字专题

    的平台是小端存储。所以咱们的char型数据打印的是0x78.三、typedef 关键字typedef的意思是起别名,当它结构体一起组合使用的时候,很多人就迷糊了啊,那么我们现在就来揭开它的神秘面纱
    发表于 10-24 16:38

    c语言中 volatile _Bool 关键字说明

    。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化。如果我去掉 这个关键字,如下图: (在编译是会显示一个警告,temp 定义了但是未使用),且编译器会将这个变量给优化掉
    发表于 01-06 10:46

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

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

    如何将网站单个关键字优化到首页?不妨来看看

    今天我们就来探讨一下网站建设中优化单个关键字的技巧。这里所说的单个关键字并不是指一个网站只有一个关键字。本文主要说的是先做好网站关键字中其中一个关键字的优化。下面我们就来详细聊一下。  第一、关键字
    发表于 12-29 10:51

    C++笔记010:C++对C的扩展——register关键字增强

    更多精彩关注微信公众号:依法编程register关键字:请求编译器让变量直接放到CPU内部寄存器里面,而不是通过内存寻址访问,速度快。在C语言中,register修饰的变量不能取地址,去寄存器变量
    发表于 08-11 12:34

    请问用labview去筛选文本(txt)中的关键字如何实现

    Hi 大家我是labview的新手,有一个关于labview 编程的问题。目的: 有个txt文本,我想筛选其中的关键字,然后将带有关键字的行列出来。请大家帮帮看看如何能实现。(关键字的行可能会重复出现,希望每行都能罗列出来)。大家帮帮忙。 先提前谢谢了
    发表于 08-24 13:15

    请问关键字volatile该什么时候用?

    这东西的概念我懂,但是实际编程时,关键字volatile该什么时候用啊,求大神来点经验之谈!
    发表于 04-28 09:06

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

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

    请问XC32编译器中不存在关键字位吗?

    关键字_bit读取一个pin,它与pic8 xc8编译器工作得很好,但是给出一个表示未知类型的错误No.Y-BIT,是XC32编译器中不存在的关键字位吗?谢谢你,Ravi。 以上来自于百度翻译 以下
    发表于 07-18 14:56

    “bit”“control”被识别为关键字

    嗨,我不明白为什么单词“bit”“control”被涂成关键字。我在别处找不到答案,我之前找到的唯一一篇帖子是在2013年写的,但是这篇文章没有答案。也许它是由netbean定义的,但是我没有找到应用程序di中的关键字列表。我的项目编译没有警告或错误,所以…塞德里克
    发表于 08-29 08:34

    为什么无法通过关键字进行论坛搜索?

    我的兄弟中没有一个能够通过关键字搜索论坛,或者选择由我启动的线程(例如)。为什么不呢?
    发表于 09-06 12:36

    C语言用typedef关键字定义结构体类型

    struct A{ int a; int b;}A, *B;/* * 之前一直以为typedef关键字给变量类型取别名时,一次只能取一个,今天看别人代码发现typedef * 还能这么用,结构体类型名别名
    发表于 09-11 23:00

    文章关键字生成机器人

    `文章关键字生成:https://store.uibot.com.cn/robots/detail/919.html文章关键字生成机器人选择含有待检索关键字文章的txt文档,自动生成100以内
    发表于 07-13 15:57

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

    教程第十三集: C语言关键字_struct -2 C语言教程第十四集:C语言关键字_union-1 C语言教程第十五集: C语言关键字_union-2C语言教程第十六集: C语言关键字_enum C
    发表于 03-04 13:24

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

    单片机C语言相关的问题,都可以在帖子下面讨论。C语言教程第一集:认识C语言C语言教程第二集:C语言关键字-常量-变量C语言教程第三集:C语言关键字_signed-unsigned-autoC语言
    发表于 04-06 09:44

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

    单片机C语言相关的问题,都可以在帖子下面讨论。C语言教程第一集:认识C语言C语言教程第二集:C语言关键字-常量-变量C语言教程第三集:C语言关键字_signed-unsigned-autoC语言
    发表于 04-12 10:40

    编译器的“关键字”到底有多关键

    DSP编程有什么技巧?使用代码优化时必须考虑哪些问题?C28x的编译器支持哪些“关键字”?编译器的“关键字”到底有多关键
    发表于 04-19 06:32

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

    单片机C语言相关的问题,都可以在帖子下面讨论。C语言教程第一集:认识C语言C语言教程第二集:C语言关键字-常量-变量C语言教程第三集:C语言关键字_signed-unsigned-autoC语言
    发表于 04-19 11:39

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

    单片机C语言相关的问题,都可以在帖子下面讨论。C语言教程第一集:认识C语言C语言教程第二集:C语言关键字-常量-变量C语言教程第三集:C语言关键字_signed-unsigned-autoC语言
    发表于 04-26 14:04

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

    语言教程第二集:C语言关键字-常量-变量C语言教程第三集:C语言关键字_signed-unsigned-autoC语言教程第四集:C语言关键字-staticC语言教程第五集:C语言关键字
    发表于 05-13 10:04

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

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

    【原创分享】单片机编程关键字之volatile

    、volatile其实const一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素而改变,比如操作系统、硬件或者其他线程等等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化
    发表于 06-29 11:17

    关键字static主要用于哪几个方面

    关键字static主要用于两个方面:1.变量2.函数1.变量1.1 局部变量1.1.1 普通局部变量1)函数内部,不用static修饰的变量;2)编译器不对变量赋初值,除非显示赋值;3)存储在进程栈
    发表于 07-15 06:54

    C语言的标识符关键字有哪些

    五、C语言的标识符关键字一个完整的1.C语言的标识符所谓标识符,实际上是一些由程序编写者自定义的名称,类似于PIC单片机汇编语言中给寄存器(RAM)的命名。C语言中所用到的变量名、函数名、数组名
    发表于 07-15 09:31

    介绍一下关键字extern的用法

    学单片机C语言一定要熟悉关键字的用法,本文介绍一下关键字extern的用法。1、extern的定义是:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量
    发表于 07-15 06:38

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

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

    volatile关键字应用场景及示例

    volatile关键字1.应用场景2.示例1.应用场景volatile关键字分析,往往应用在三种场合1)多线程编程共享全局变量的时候,该全局变量要加上volatile进行修饰,让编译器不要优化该变量
    发表于 08-24 07:21

    STM32无***it关键字不能单个位操作

    STM32无***it关键字,不能单个位操作,一般有两种方式:1、读改写。2、位段操作。第一种方法,先从寄存器中读出原来的值,对相应的位修改,再写入寄存器。unsigned int tmp
    发表于 08-24 07:05

    Volatile关键字对于嵌入式开发有什么作用呢

    前言在进行嵌入式开发中,我们往往会看到一个名为volatile或者__IO的关键字,那么,它们对于嵌入式开发有什么作用呢?浅析volatile数据类型实际上,__IOvolatile是相同的关键字
    发表于 11-05 09:20

    关键字static的作用是什么

    嵌入式面经1.关键字static的作用是什么2.关键字const是什么含意?3.const定义的区别4.关键字volatile有什么含意 并给出三个不同的例子。5.引用指针有什么区别6..h
    发表于 11-09 07:23

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

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

    ROM中CODE关键字的作用

    ROM,RAM以及code,dataram掉电丢失rom掉电不丢失因为单片机RAM很有限,所以将不变的保存到ROM中CODE关键字的作用就是告诉编译器把这些内容写到ROM中以 AT89c51 为例
    发表于 12-08 07:51

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

    嵌入式程序员const、static、volatile三个关键字的朴素认识摘要:在C语言程序编写中,const、static关键字是比较熟悉的,volatile关键字是比较少见的。但是在嵌入式工程
    发表于 12-21 06:08

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

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

    XML流上的关键字查询算法

    针对当前XML 流过滤研究中存在的问题,使用关键字查询方法作为解决方案。提出最右包含边界的概念,结合一个虚拟栈实现用于在XML 数据流上进行关键字查询的XVirtualStack 算法。理
    发表于 03-21 15:07 14次下载

    混合Chord网络中的有效关键字检索

    对基于分布式哈希表的Chord网络进行文件的精确匹配。采用反向索引方法可以实现基于关键字的检索,但难以解决普遍关键字问题。HIKEC是基于IMS的移动P2P文件共享服务网络架构,采
    发表于 04-22 08:49 17次下载

    基于关键字相似度的案例推理研究与应用

    以实现基于Web 的CBR 检索、重用、修改、保存为目标,通过框架表示方法构造案例,提出一种新的基于关键字相似度的检索算法以提高设备保障维修的效率。该算法通过计算关键
    发表于 01-09 11:38 9次下载

    C51中的关键字及用途说明

    C51 中的关键字关键字 用途 说明auto 存储种类说明 用以说明局部变量,缺省值为此break 程序语句 退出最内层循环case 程序语句 Switch 语句中的选择项char 数据类型说明
    发表于 02-21 08:57 68次下载

    单片机C语言中常用到的关键字及数据类型

    单片机C语言中常用到的关键字及数据类型。
    发表于 11-03 10:57 12次下载

    标准C语言总共有32个关键字

    标准C语言总共有32个关键字
    发表于 01-12 15:59 2次下载

    C语言32个关键字九种控制语句34种运算符

    C语言32个关键字九种控制语句34种运算符 C语言32个关键字九种控制语句34种运算符
    发表于 05-06 11:47 5次下载

    C语言32个关键字

    C语言32个关键字,感兴趣的小伙伴们可以看看。
    发表于 07-26 16:29 65次下载

    arduino关键字资料

    arduino关键字
    发表于 04-23 10:46 7次下载

    32个关键字9个控制语句34个运算符概述

    32个关键字9个控制语句34个运算符
    发表于 05-15 09:32 13次下载

    final关键字的用法

    在Java中,final关键字可以用来修饰类、方法变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。 1.修饰类 当用final修饰一个类时,表明这个类不能被
    发表于 09-27 10:36 0次下载
    final<b>关键字</b>的用法

    java中static关键字的作用

    static关键字是很多朋友在编写代码阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后
    发表于 09-27 17:12 0次下载

    单片机C编程中的关键字sfrsbit的简介

    本文档的主要内容详细介绍的是单片机C编程中的关键字sfrsbit的简介资料免费下载。
    发表于 08-07 17:33 1次下载
    单片机C编程中的<b>关键字</b>sfr<b>和</b>sbit的简介

    C语言关键字static有哪些绝妙用途

    为什么要说static妙,它确实是妙,在软件开发或者单片机开发过程中,大家总以为static就是一个静态变量,在变量类型的前面加上就自动清0了,还有就是加上static关键字的,不管是变量还是关键字
    发表于 07-18 17:38 1次下载
    C语言<b>关键字</b>static有哪些绝妙用途

    C51的符号五大语句及关键字等详细资料说明

    本文档的主要内容详细介绍的是C51的符号五大语句及关键字等详细资料说明包括了:C语言 基本标点符号,函数书写格式与函数调用,单片机五大语句与32个C语言关键字,C51 特殊关键字,C51 预编译关键字
    发表于 12-11 17:34 20次下载
    C51的符号<b>和</b>五大语句及<b>关键字</b>等详细资料说明

    指定邮件服务器的身份认证关键字搜索加密方案

    关键字加密以抵抗离线关键字猜测攻击,在随机预言模型下,对该方案适应性选择消息攻击的关键字密文不可区分性、陷门不可区分性离线猜测攻击的安全性进行验证。理论分析和数值实验结果表明,与DIBEKS方案相比,该方案在
    发表于 03-18 10:36 1次下载
    指定邮件服务器的身份认证<b>关键字</b>搜索加密方案

    基于关键字的自定义古诗句生成设计与实现

    Seq2Seq模型,通过自建的数据集进行训练,实现了基于关键字的自定乂古诗句生成。在生成阶段,首先输入一段描述性内容,并从中提取岀关键字。当关键字不足时,使用word2vec进行有效的关键字补全操作。此外,针对古诗体裁难以控制问题
    发表于 04-12 15:30 16次下载
    基于<b>关键字</b>的自<b>定义</b>古诗句生成设计与实现

    51单片机编程之中断函数using关键字的作用

    51单片机编程之中断函数using关键字的作用
    发表于 11-20 16:36 7次下载
    51单片机编程之中断函数using<b>关键字</b>的作用

    keil中C51关键字code用法

    keil中关键字code说明 用unsigned int 或signed char等定义的变量都存储在单片机的RAM中,程序中可以随意更改这些变量的值。而运用code关键字修饰下定义的变量,比如
    发表于 11-29 10:36 11次下载
    keil中C51<b>关键字</b>code用法

    C环境中的VOLATILE关键字

    volatile 提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这 个变量的时候,都会直接从变量地址中读取数据。如果没有 volatile 关键字,则编译器可能
    发表于 06-14 15:03 1次下载
    C环境中的VOLATILE<b>关键字</b>

    用于控制RGB灯的TinyML关键字检测

    使用Arduino Nano 33 BLE Sense训练TensorFlow模型以识别某些关键字并控制RGB灯带。与传统代码相比,边缘机器学习对于创建可通过更少的编程逻辑流程图完成“智能”任务
    发表于 01-03 17:59 0次下载

    C语言中的volatile关键字

    volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。
    发表于 05-27 09:32 3051次阅读

    单片机关键字sfrsbit区别

    在单片机C语言编程中,扩充了两个关键字sfrsbit。sfr(Special Function Register特殊功能寄存器的缩写),sbit(特殊功能寄存器位),与定义一般的int、char型变量不同,这两个字定义的并不是变量,而作为特殊功能寄存器的引用
    发表于 11-22 10:14 7151次阅读

    java final关键字用法技巧汇总解析

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。
    发表于 12-01 11:02 762次阅读
    java final<b>关键字</b>用法技巧汇总解析

    java中的final关键字所起的作用解析

    在java编程语言中,有时候需要告知编译器一段数据是不变的编译期常量。对于这种情况,编译器可以将此常量值带入需要用到它的计算式子当中,这种在编译时执行计算式的方法减轻了运行时的开销。通常,这类常量数据都是基本类型的数据,并赋予关键字final,同时在对此常量定义时需要进行赋值。
    发表于 12-01 11:29 2413次阅读

    嵌入式C语言非常常用的关键字

    这个关键字前面也有提到,它的作用是强大的。要对static关键字深入了解,首先需要掌握标准C程序的组成。
    的头像 发表于 06-27 15:54 4770次阅读

    嵌入式C语言必须要用的4个关键字和它的详细资料概述

    1.static关键字 这个关键字前面也有提到,它的作用是强大的。 要对static关键字深入了解,首先需要掌握标准C程序的组成。
    的头像 发表于 07-05 10:20 6542次阅读

    浅析C语言中typedef关键字的作用

    C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。
    的头像 发表于 11-08 08:42 5029次阅读

    你了解Makefile关键字

    如果一个变量的值需要在编译选项中指定或由系统传入,那么makefile中可以使用override关键字来设置,使这个变量的赋值被忽略
    发表于 05-16 15:14 887次阅读
    你了解Makefile<b>关键字</b>?

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

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

    关于volatile关键字对编译器优化的影响

    volatile关键字对编译器优化的影响
    的头像 发表于 02-28 17:15 2020次阅读

    Keil自定义关键字、 快捷键···

    Keil自定义关键字、快捷键···
    的头像 发表于 03-12 11:33 3416次阅读

    一般什么时候需要使用volatile关键字

    想必大家平时都见过volatile关键字,可是大家知道什么时候需要使用volatile关键字吗?
    的头像 发表于 12-24 17:29 347次阅读

    C++中mutable关键字详解与实战

    mutable关键字详解与实战 在C++中mutable关键字是为了突破const关键字的限制,被mutable关键字修饰的成员变量永远处于可变的状态,即使是在被const修饰的成员函数中。 在
    的头像 发表于 09-10 09:23 2292次阅读

    C语言32个关键字可以分为这几类

    C语言是一种面向过程、抽象化的通用程序设计语言,广泛应用于嵌入式底层系统开发。C语言关键字共有32个,根据用途,可分为四类:第一类:变量数据类型关键字:14个第二类:9条基本语句用到的关键字:12
    的头像 发表于 12-31 06:43 104次阅读
    C语言32个<b>关键字</b>可以分为这几类

    python语言之使用async关键字定义函数

    早期的协程是用yield来实现的,但是代码特别难懂, python3.5之后的版本, 使用 async 关键字定义的函数。调用该函数,会返回一个协程对象
    的头像 发表于 08-24 11:12 1317次阅读

    C语言中__attribute__ 关键字的用法

    嵌入式开发,离不开 C 语言,C语言中有很多语法会直接或间接影响你代码的质量,下面就来讲讲__attribute__ 关键字的用法。 1. 什么是 __attribute__ GNU C 编译器
    发表于 10-19 09:06 3037次阅读

    C语言最鸡肋的关键字

    C语言的关键字有很多,要说最不常见的,我觉得应该是auto。 说它不常见,因为很多时候,我们都把它给省略了。 比如在函数内部定义变量a,正常人都会这样写:
    的头像 发表于 02-09 14:49 85次阅读

    ARM中关键字的具体使用

    奇怪。之前对于 __weak 关键字一直是一个简单的认知:「编译器自动使用没有 __weak 的同名函数(如果有的话)替换有 __weak 关键字的同名函数,__weak 函数可以没有定义,且编译器
    的头像 发表于 02-10 15:06 143次阅读

    一文详解volatile关键字

    volatile 是易变的、不稳定的意思。const一样是一种类型修饰符,volatile关键字修饰的变量,编译器对访问该变量的代码不再进行优化,从而可以提供对特殊地址的稳定访问。
    的头像 发表于 02-15 11:54 104次阅读
    一文详解volatile<b>关键字</b>

    C++中的const关键字介绍

    前一篇文章我们主要介绍了C++中的复合类型引用指针,这篇文章我们将会主要介绍C++中const关键字。有时候我们想定义一个值不能被改变的变量,例如我们想使用一个变量存储buffer的大小,如果我们不希望这个值被改变,那么我们就可以使用const关键字
    的头像 发表于 03-17 14:01 84次阅读

    C语言关键字volatile的用法

    许多程序员都无法正确理解C语言关键字volatile,这并不奇怪。因为大多数C语言书籍通常都是一两句一带而过,本文将告诉你如何正确使用它。
    发表于 04-11 09:35 133次阅读

    浅谈C++的mutable关键字

    C++11中推出了一种特殊的关键字:mutable用于修饰类变量。它的作用是标注该变量一定会被修改,因此也就不是const类型。目的是为了使这些成员变量在被const关键字修饰的成员函数中使用时,可以被修改。
    的头像 发表于 04-15 11:13 216次阅读

    下载硬声App