20C语言0624

共用体/结构体/枚举

1.共用体

1.1共用体的使用

使用:union 共用体名
{
成员类型 成员名;
成员类型 成员名;
成员类型 成员名;

};
共用体:特点:节省内存
大小: 最大类型开辟
表达: union
格式:
1.1 先定义共用体类型,再定义共用体变量名
union 共用体类型名
{
共用体成员;
};
union 共用体类型名 变量名;
1.2 定义共用体类型同时定义共用体变量名
1.3 省略共用体类型名同时定义共用体变量名
1.4 利用 typedef 重定义 共用体

共用体成员引用:
变量: .
指针:->

1.2 共用体和结构体的区别

结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。

2.结构体

1.1结构体的使用

struct 结构体类型名
{
成员列表;

}变量名1,变量名2…;
struct STU
{
char name[100];
int ID;
char ZY[100];
float score;
};
struct STU a;
数据类型的大小:最大类型(基本数据类型)的整数倍

==============================================
结构体变量引用 .
结构体指针引用 ->:

 #include <stdio.h>
 #include <string.h>
 struct TEST2
 {
int ID;
char name[100];
         int score;
  };
int main()
{
struct TEST2 student1;
struct TEST2 *p=&student1;
student1.ID=10101;

strcpy(student1.name,"张三");
student1.score=10; 
printf("%d\n",sizeof(struct TEST2));
printf("%d\t%s\t%d\n",student1.ID,student1.name,student1.score);
scanf("%d",&(p->ID));
getchar();
gets(p->name);
scanf("%d",&(p->score));
printf("%d\t%s\t%d",p->ID,p->name,p->score);
printf("%d\t%s\t%d",(*p).ID,(*p).name,(*p).score);		
} 

==============================================

3.枚举

枚举
关键字: enum
枚举定义方式:
enum 枚举名
{
枚举元素1,枚举元素2…};
1.1 先定义枚举名,再定义枚举变量名
1.2 定义枚举类型同时定义枚举变量名
1.3 省略枚举类型名同时定义枚举变量名
1.4 利用 typedef 重定义 枚举

2.1 成员引用–直接引用成员,不需要经过枚举变量名调用
2.2 在没有初值情况下,枚举元素从0开始,依次加1
枚举元素在有值的情况下,后面枚举元素会在该值基础上依次加1
2.3 枚举大小永远为4个字节;
enum week
{
sun, //枚举的成员是一个常量 没有数据类型,成员之间用逗号,隔开
mon,
tue,
wed,
thu,
fri,
sat
};
总结:

  • 1.枚举的成员可以直接使用,在跟变量不同名的情况下使用
  • 2.枚举成员在不赋值的时候,第一个成员为0,第二个是1,后面的自增1
  • 3.在赋值的时候,则从赋值的地址自增1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值