C语言构造类型

共用体

产生以及意义

大小是共用体中占有字节数最大的字节数。共同体同一时间只能存在一个。

类型描述

union 共用体名

{

数据类型 成员名1;

数据类型 成员名2;

。。。

};

嵌套定义

cpp 复制代码
#include <stdlib.h>
#include <stdio.h>


struct MM
{
    int i;
    char ch;

    union   //  MU  不写名称为匿名结构体
    {
        int a;
        char c;
    }un;
    float f;

};

union UU
{
    int a;
    double b;
    struct
    {
        int arr[10];
        float f;
    };
};

int main()
{

    struct MM m;
    printf("sizeof = %ld \n",sizeof(m));

    exit(0);
}

定义变量,初始化与引用

cpp 复制代码
#include <stdlib.h>
#include <stdio.h>

union My
{
    int i;
    float f;
    double  d;
    char    c;

}m1;


int main()
{

    union My m;
    union My* p;

    p->f = 3.14;
    m.i= 10;
    printf("sizeof(m) = %ld \n",sizeof(m) );
    printf("m.f = %f \n",m.f);
    printf("m.i = %d \n",m.i);


    exit(0);
}

占用内存大小

占用共用体中,最大的那个元素的大小

cpp 复制代码
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
/*
求一个无符号数的高16位加低16位
*/


union
{
    struct
    {
        uint16_t i;
        uint16_t j;
    }x;
    uint32_t y;
}a;

int main()
{

    
    unsigned int i = 0x11223344;
    //方式一:位运算
    unsigned int sum = (i>> 16) + (i & 0xFFFF);
    printf("sum = %u \n",sum);
    printf("sum = 0x%x \n",sum);
    //方式二:共用体
    a.y = 0x11223344;
    printf("sum = 0x%x \n",(a.x.i +a.x.j));
    

    exit(0);
}

位域

没有实际的开发意义,但是面试过程中可能会考到

1字节占8位,用位域可以减少空间,但是不好移植,因为不同平台直接会有大小端的数据存储差异。语法 如下: 用冒号进行分开。

计算机存储数据的存储特点:正数直接存储,负数:绝对值 取反 在加1,逆推的话就是 减一 取反在加负号。

struct m

{

char a:1;

char b:2;

};

枚举

在别的语言中,枚举可能是基本类型或者构造类型,根据各自语言的定义。

enum的siof为

nuem 标识符

{

a,

b,

c

}

a从0开始存,一直向上增加,从int,增加到long long类型,超出会报错

enum.c:8:5: error: overflow in enumeration values(

enum.c:8:5:错误:枚举值溢出

相关推荐
李妍.30 分钟前
02Numpy基础(上)
开发语言·python
TheBestRucy32 分钟前
Python 九阳神功之贰:面向对象(下)
开发语言·python
YH55269841 小时前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
AI_小站1 小时前
刚面完百度的 Agent 开发岗,我才发现:世界就是个巨大的草台班子
java·开发语言·人工智能·spring·百度·langchain
felixking2 小时前
C++20 协程
开发语言·c++·协程
遥感知识服务3 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶3 小时前
1-13-TimSort
算法
ZJU_统一阿萨姆3 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
Zane1994123 小时前
CAS 与原子类:Java 如何实现无锁编程
java·开发语言
码农颜4 小时前
6.3 主函数流程剖析
开发语言·php