C语言基础-结构体、共用体、枚举

C语言基础-结构体、共用体、枚举

一、结构体

1.是一组有序不同数据类型的数据集合(是一种构造数据类型)

2.声明结构体类型

struct 结构名
{
类型1 成员变量1;
类型2 成员变量2;
};
例:
struct student // 定义一种结构体类型
{
char name[20];
int age;
int num;
char addr[23];
} ;

3.定义结构体变量

第一种方式 struct 结构名 变量名;
例:struct student sam;//定义struct student类型变量sam
//注意struct student 结构体类型已经声明定义,才能这么使用(上面“2.声明结构体类型”定义了该结构体类型)

第二种方式
struct 结构名
{
类型1 成员变量1;
类型2 成员变量2;
}变量1,变量2;
例:
struct student // 定义一种结构体类型
{
char name[20];
int age;
int num;
char addr[23];
} sam,lucy ; // 同时定义这种结构体类型的两个变量

第三种方式
struct
{
类型1 成员变量1;
类型2 成员变量2;
}变量名;
例:
struct // 定义一种结构体类型(结构名省略)
{
char name[20];
int age;
int num;
char addr[23];
} sam,lucy ; // 同时定义这种结构体类型的两个变量

4.访问结构体成员变量

结构体变量:变量名.成员名
结构体变量指针:指针变量->成员名 或者 (*指针变量).成员名
例:
#include <stdio.h>
struct student
{
char name[20];
int age;
int num;
char addr[23];
};
int main(void)
{
struct student sam; // 定义变量
struct student *p=NULL;
p = &sam;
sam.name = “xiaoming”; // 普通结构体变量使用成员的方式
p->age = 33; // 结构体指针变量应用成员的常用使用方式
*p).num= 1; // 先通过指针取出整个结构体变量,然后再引用单个成员
}

5.结构体的大小

1)结构体变量的首地址是其最宽基本类型成员的整数倍
2)结构体每个成员相对于结构体首地址的偏移量,都是该成员大小的整数倍(对齐)
3)结构体的总大小是其最宽基本类型的整数倍(补齐)

二、共用体

1.共用体中的成员变量公共用一块内存

2.共用体声明(与结构体类似)

union 共用体名
{
类型1 成员变量1;
类型2 成员变量2;
}

3.定义结构体变量

第一种方式 union 结构名 变量名;
第二种方式
union 结构名
{
类型1 成员变量1;
类型2 成员变量2;
}变量1,变量2;
第三种方式
union
{
类型1 成员变量1;
类型2 成员变量2;
}变量名;

例:
union
{
char c;
int age;
float score;
};

2.共用体大小

(1)由最大成员变量大小决定
(2)必须是最大基本类型的整数倍

三、枚举

1.把某个变量只能取确定的几个值,这种变量就可以定义成枚举类型

枚举类型把所有可能取到的值一一列举出来 ,列举出来的值叫做枚举常量

2.枚举类型声明

enum 枚举名
{ 枚举变量1,枚举变量2,…… };

例:
enum weekday{sun,mon,tue,wen,thu,fri,sat};
int main(void)
{
enum weekday day;
day= sun;
printf("%d\n",day); //输出 0
day= wen;
printf("%d\n",day); // 输出3
return 0;
}

3.枚举类型默认值从0开始往后逐次增加,枚举变量的取值只能是枚举值

4.枚举值有赋值就从赋值的值开始逐次增加

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值