C语言知识点2

一,C/C++的基本结构体,共用体以及枚举

1.1 C/C++基本结构体

(1)结构体的概述
(2)结构体类型的定义
(3)结构体变量的操作

1.2 C/C++基本共用体

1.3 C/C++枚举


1.1 C/C++结构体

(1)结构体的概述

结构体是一种自定义的数据类型,它可以包含多个不同的数据类型的成员。

结构体由一个或多个成员变量组成,每个成员变量都可以有不同的数据类型和名字。结构体也可以嵌套定义在其他结构体中,以实现更复杂的数据模型。

例如定义学生的学号,姓名、性别、年龄、地址等属性:使用基本类型定义的话有点麻烦,我们就可以使用结构体来定义:

struct student{
	int num;
	char name[16];
	char sex;
	int age;
	char addr[32];
};

(2)结构体类型的定义

在 C++ 语言中,可以使用 struct 关键字来定义一个结构体类型。

结构体的基本语法:

struct 结构体名称 {
    数据类型 成员变量1;
    数据类型 成员变量2;
    ...
};

结构体类型定义:

struct Student {
    int id;         // 学生学号
    char name[20];  // 学生姓名
    int age;        // 学生年龄
};
// 结构体定义变量
struct Student tom;
struct Student Lion;

注意:

  • 系统不会为结构体类型开辟空间,只会为结构体类型定义的变量开辟空间。

  • 定义结构体类型时,不要给成员初始化值。

三种定义结构体类型的方法:

1,先定义结构体类型,再定义结构体变量。

//结构体类型
struct Student{
	int id;
	char name[16];
};
//结构体变量
struct Student tom;

2,定义结构体类型的同时定义变量。

struct Student{
	int id;
	char name[16];
} tom;//同时定义变量

3,定义一次性结构体类型。

struct{
	int id;
	char name[16];
} tom;

(3)结构体变量的操作

局部变量不初始化,变量中的成员内容不确定(随机值)

结构体变量的初始化:

结构体变量的初始化必须遵循成员的顺序以及成员自身的数据类型。

1.2 C/C++基本共用体

共用体(union)是一种特殊的数据类型,它允许在同一个内存区域存储不同的数据类型。与结构体不同的是,共用体只能同时存储其中一个成员的值。

共用体的语法:

union my_union {
    int i;
    float f;
    char str[10];
};

共用体和结构体的区别:

  • 结构体所有成员拥有独立的内存空间。

  • 共用体的所有成员共享同一块内存空间。

  • 共用体的空间是由最大的成员类型决定的。

1.3 C/C++枚举

枚举(enum)是 C++ 中的一种数据类型,它允许将一组常量值定义为一个命名集合。枚举中的每个元素都有一个关联的整数值,默认情况下从 0 开始递增。枚举元素也可以显式地指定整数值。

枚举的语法如下:

enum EnumName {
    Element1,
    Element2 = 10,
    Element3
};

总结:

  1. 结构体(struct)。结构体是一种用户自定义的复合数据类型,它由多个不同数据类型的成员组成。结构体中的每个成员可以具有不同的数据类型和长度,并且每个成员都可以单独访问。通过使用结构体,可以方便地表示一个对象或者实体,增加代码可读性和可维护性。

  2. 共用体(union)。共用体也是一种用户自定义的复合数据类型,它与结构体类似,但所有成员都共享同一个内存空间。也就是说,在任何时刻只能有一个成员被赋值或访问。共用体通常用于需要在不同情况下使用相同内存区域的场景。需要注意的是,由于共用体中所有成员都共享同一个内存空间,因此在使用时应该小心避免出现未定义行为。

  3. 枚举(enum)。枚举是一种用户自定义的基本数据类型,它由多个命名常量值组成。每个枚举元素都有一个关联的整数值,默认情况下从 0 开始递增。枚举元素也可以显式地指定整数值。使用枚举可以方便地定义一组相关的常量,并增加代码可读性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值