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、结构体数组

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

cpp 复制代码
#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、枚举的定义
cpp 复制代码
enum Weekday {
    Sunday,    // 默认为 0
    Monday,    // 默认为 1
    Tuesday,   // 默认为 2
    Wednesday, // 默认为 3
    Thursday,  // 默认为 4
    Friday,    // 默认为 5
    Saturday   // 默认为 6
};

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

2、枚举的使用
cpp 复制代码
#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;
}
相关推荐
浪扼飞舟13 分钟前
c#基础二(类和对象,构造器调用顺序、访问级别、重写和多态、抽象类和接口)
java·开发语言·c#
yuanpan29 分钟前
python标准库有哪些模块,简单总结下。
开发语言·python
听情歌落俗36 分钟前
MATLAB3-2数据存储-台大郭彦甫
开发语言·数学建模·matlab·矩阵
云天徽上1 小时前
【数据可视化-112】使用PyEcharts绘制TreeMap(矩形树图)完全指南及电商销售数据TreeMap绘制实战
开发语言·python·信息可视化·数据分析·pyecharts
NG WING YIN2 小时前
Golang關於信件的
开发语言·深度学习·golang
Sunny_yiyi2 小时前
Java根据模版导出PDF文件
java·开发语言·pdf
橘子132 小时前
C++实战:搜索引擎项目(二)
开发语言·c++·搜索引擎
赵谨言3 小时前
基于python人物头像的卡通化算法设计与实现
开发语言·经验分享·python
应用市场3 小时前
Qt C++ 图形绘制完全指南:从基础到进阶实战
开发语言·c++·qt
楼田莉子3 小时前
python小项目——学生管理系统
开发语言·python·学习