C语言程序设计 细节总结(第9章 结构体共用体枚举)

第9章 结构体、共用体、枚举

9.1 结构体

1.对于同类型结构体变量之间可以整体一次赋值

9.2 指向结构体的指针

9.2.1结构体变量的指针

1.定义格式:struct 结构体名 *结构体指针变量名
2.赋值格式:结构体指针变量名=&结构体变量
3.结构体成员引用:
(1)(*结构体指针变量).成员名
(2)结构体指针变量->成员名
例:

#include<stdio.h>
struct stu
{
    int num;
    char name[20];
    int score;
};
int main()
{
    struct stu s={1001,"zhang",99};
    struct stu *p;
    p=&s;
    printf("num\tname\tscore\n");
    printf("%d\t%s\t%d\n",s.num,s.name,s.score);
    printf("%d\t%s\t%d\n",(*p).num,(*p).name,(*p).score);
    printf("%d\t%s\t%d\n",p->num,p->name,p->score);
    return 0;
}

9.2.2 结构体数组的指针:与指向多维数组的指针类似
9.2.3 结构体(数组)作函数的参数、指向结构体的指针作函数参数

9.3 共用体(union)

1.共用体类型:为了节省内存空间,把不同用途的数据存放在同一存储区域
2.共用体类型变量在内存中所占空间不是所有成员空间长度和,而是长度最大成员项的存储空间
3.由于各成员共用一个存储空间,所以第一次赋得值会被第二次覆盖,覆盖后归0
4.定义:union 共用体名{成员列表};
5.初始化:union 共用体类型名 共用体变量名={初始值};

9.4 枚举类型(enum)

1.枚举类型定义:enum 枚举名{枚举值表};
2.枚举变量定义:enum 枚举类型名{枚举值表}枚举变量表列;
3.枚举数组定义:enum 枚举类型名 数组名[长度];
4.枚举变量初始化:枚举变量=枚举元素;
例:

enum weekday{sun,mon,tue,wed,thu,fri,sat};
enum weekday a,b;

enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b;
enum weekday enday[7];
a=mon;
b=(weekday)6;

5.枚举数据的输入输出:不能对枚举数据直接输入输出,但枚举变量可作为整型变量处理。
(1)输入:scanf(“%d”,&a);
(2)输出:
1)直接输出枚举变量中存放的整型值,但不直观:

a=mon;printf(“%d”,a);

2)利用多分支选择语句输出对应字符串:

Switch(a)
{
case sun:printf(“sun”);break;
case mon:printf(“mon”);break;

}

3)用二维字符数组存储枚举常量对应的字符串

enum flag{first,second} fg;
char *name[]={“first”,”second”};
fg=first;
printf(“%s”,name[fg]);

9.5 用typedef关键字定义类型

1.可以用typedef为已有类型名定义新的类型名,可以声明数组、字符串类型
2.typedef与#define类似,#define是在预编译s时处理的,只能做简单替换,typedef是编译时处理的
3.typedef有利于程序通用与移植

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值