Linux学习-共用体和枚举,位运算

目录

共用体

​编辑枚举

位运算


共用体

定义和访问都和结构体类似;区别在于共用体所有的成员变量共享同一片空间,内存空间就是其最大数据类型所占内存的大小;

如果给成员变量2的值,那么成员变量1的值就会被覆盖;主要适用于传参;

关键词:

union  共用体名

{

        数据类型1  成员变量1;

         数据类型2  成员变量2;

         数据类型3  成员变量3;

        ...........

};

重点使用:判断硬件存储方式是大端还是小端,如下图二

内存小端:内存低地址存低数据位

                  内存高地址存高数据位

内存大端:内存低地址存高数据位

                  内存高地址存低数据位

通过将int *型首地址强制转换为char *从而打印出第一个地址从而判断其是大端还是小端,强制转化地址指针其存储内容不会改变

通过union判断大小端程序及图解如下通过共用体特性的判断

枚举

enum 枚举类型名

{

        枚举常量1,

        枚举常量2,

        枚举常量3

        .....

};

1,枚举一般说明将来变量的值在给定的常量中选择其一作为他的值

2,枚举常量可以被赋值,下一个常量的值就是这个常量的加1,第一个默认为0

3,枚举常量默认为int类型,可以直接在程序中使用

举例:

该举例中用int *的作用是:

当使用 scanf 函数从标准输入中读取数据时,它需要知道数据将被存储在内存的哪个位置。scanf 函数通过传递参数的内存地址来实现这一目的。

在C语言中,变量是存储在内存中的,每个变量都有一个地址。& 运算符用于获取变量的地址。例如,如果有一个整数变量 num&num 将给出 num 变量的地址。

但是,scanf 函数的参数必须是指向要存储数据的内存位置的指针,即某个数据类型的指针。例如,如果要读取一个整数值,scanf 需要一个 int* 类型的指针作为参数。

然而,在的代码中,s 是一个枚举类型的变量,而不是一个指针。因此,为了使 scanf 函数正常工作,需要使用 & 运算符获取 s 变量的地址,并将它强制转换为 int* 类型的指针。这样做可以将 s 变量的地址传递给 scanf 函数,让它知道在哪里存储输入的数据。

位运算

&按位与         与0得0;

| 按位或         或1置1;

^按位异或        相同为0,相异为1

~按位取反        每位取反

>>右移                右移n位,等价于让该数/2^n

<<左移                左移n位,等价于让该数*2^n

位运算在数据交换中的运用代码及其图解如下:

将变量得第n位置0或者是置1(单片机中常用)

置0: num = num & ~(1<<n);

置1:num = num | (1<<n);

相关推荐

  1. C语言共用

    2024-03-09 23:22:09       19 阅读
  2. ,typedef,运算

    2024-03-09 23:22:09       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-09 23:22:09       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-09 23:22:09       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-09 23:22:09       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-09 23:22:09       20 阅读

热门阅读

  1. Python爬虫利器

    2024-03-09 23:22:09       20 阅读
  2. 移动端开发之uni-app开发规范说明

    2024-03-09 23:22:09       21 阅读
  3. HTML 02

    HTML 02

    2024-03-09 23:22:09      17 阅读
  4. Spring Authorization Server简介

    2024-03-09 23:22:09       20 阅读
  5. QNX开发用什么语言?QNX和FreeRTOS什么关系?

    2024-03-09 23:22:09       22 阅读
  6. 深入了解C#中的垃圾回收(Garbage Collection)

    2024-03-09 23:22:09       23 阅读