当前位置: 首页 > article >正文

C语言-构造数据类型

1、构造数据类型

        结构体、共用体、枚举。

2、结构体

        1、结构体的定义

                结构体是一个自定义的复合数据类型,它允许将不同类型的数据组合在一起。

struct 结构体名
{
    数据类型1 成员变量1;
    数据类型2 成员变量2;
    数据类型3 成员变量3;
    数据类型4 成员变量4;
}
        2、结构体变量的定义

                数据类型 变量;

        3、结构体的初始化

                1、全部初始化

struct student s = {"zhangsan", 'm', 19, 100};

                2、局部初始化

struct student s = {

    .name = "zhangsan",
    .score = "100",
};
        4、结构体元素的访问

                结构体访问成员变量最终类型由成员变量决定

                结构体变量访问成员变量: .

                结构体指针访问成员变量: —>

        5、结构体的存储:

                内存对齐

                        结构体变量只能存储在内存地址为自身基本类型长度整数倍的内存单元

                        结构体整形的大小必须为最大类型长度的整数倍

        6、结构体数组

                数组类型 数组名[元素个数];

#include <stdio.h>

struct Student {
    char name[50];
    int age;
};

// 函数:通过指针传递结构体数组
void printStudents(struct Student *students, int size) {
    for (int i = 0; i < size; i++) {
        printf("Student %d: Name = %s, Age = %d\n", i+1, students[i].name, students[i].age);
    }
}

int main() {
    // 定义一个结构体数组
    struct Student students[3] = {
        {"Alice", 20},
        {"Bob", 22},
        {"Charlie", 21}
    };

    // 调用函数,传递结构体数组
    printStudents(students, 3);

    return 0;
}

3、共用体

        union

                共用体与结构体定义和元素访问都一致

                结构体成员变量空间都是独立的,共用体成员变量空间是共享的

        内存大小端

                内存低地址存放低数据位称为小端

                内存低地址存放高数据位称为大端

4、枚举

        enum

        1、枚举的定义
enum Weekday {
    Sunday,    // 默认为 0
    Monday,    // 默认为 1
    Tuesday,   // 默认为 2
    Wednesday, // 默认为 3
    Thursday,  // 默认为 4
    Friday,    // 默认为 5
    Saturday   // 默认为 6
};

        枚举常量第一个值默认为0,后续枚举常量的值默认为前一个枚举常量的值+1

        2、枚举的使用
#include <stdio.h>

enum Weekday {
    Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
};

int main() {
    enum Weekday today;

    today = Wednesday; // 设置枚举值为 Wednesday

    if (today == Wednesday) {
        printf("Today is Wednesday.\n");
    }

    return 0;
}


http://www.kler.cn/a/516787.html

相关文章:

  • llama-2-7b权重文件转hf格式及模型使用
  • Python数据可视化(够用版):懂基础 + 专业的图表抛给Tableau等专业绘图工具
  • Linux 消息队列的使用方法
  • 【Elasticsearch】腾讯云安装Elasticsearch
  • npm install 报错:Command failed: git checkout 2.2.0-c
  • 重学SpringBoot3-WebClient配置与使用详解
  • [Qt]系统相关-多线程、线程安全问题以及线程的同步机制
  • Spring Boot/MVC
  • kamailio-5.8.4-centos9编译
  • impala增加字段,hsql查不到数据
  • FastJson很快,有什么用?
  • 8.5 Whisper:解锁语音识别新高度的智能助手
  • 服务器交换区占用量查看
  • 3个基于.Net开发的、开源远程管理工具
  • Nacos 2.5.0 全文详解及配置(并解决WebServerException: Unable to start mbedded Tomcat)
  • Redis高阶4-数据统计
  • Go学习:iota枚举
  • React第二十四章(自定义hooks)
  • 利用 SAM2 模型探测卫星图像中的农田边界
  • 【CES2025】超越界限:ThinkAR推出8小时满电可用的超轻AR眼镜AiLens
  • Formality:时序变换(二)(不可读寄存器移除)
  • C# Interlocked 类使用详解
  • 深度学习|表示学习|卷积神经网络|局部链接是什么?|06
  • 【博客之星】2024年度总结
  • YOLO(You Only Look Once)--实时目标检测的革命性算法
  • 【ChatGPT】意义空间与语义运动定律 —— AI 世界的神秘法则