C语言之结构和联合

一、结构和联合

(一)结构体:声明一个结构体类型的一般形式为:
struct 结构体名 {成员表列};
如:struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
} ;定义结构体类型变量:
1、先声明结构体类型再定义变量名
例如:struct student student1, student2;
2、在声明类型的同时定义变量
这种般形式为:
struct 结构体名

成员表列;
}变量名表列;
3、在定义了结构体变量以后,当然可以引用这个变量。但应遵守以下规则:
(1)不能将一个结构体变量作为一个整体进行输入和输出。
例如: 已定义student1和student2为结构体变量并且它们已有值。
printf(″%d,%s,%c,%d,%f,%\n″,student1); 错误
(2) 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。
例如:
scanf(″%d″,&student1.num); (输入student1.num的值)
printf(″%o″,&student1); (输出student1的首地址)
4、结构体成员的表现形式:
①结构体变量.成员名
②(*p).成员名
③p->成员名(其中->称为指向运算符)
(二)用结构体建立链表
struct student
{
int num;
float score;
  struct student *next ;(*不能忘掉,否则会出现错误)
};
其中成员num和score用来存放结点中的有用数据(用户需要用到的数据),next是指针类型的成员,它指向struct student类型数据(这就是next所在的结构体类型)
(三)处理动态内存所需的函数:库函数提供动态地开辟和释放存储单元的
有关函数:
1、malloc函数: void *malloc(unsigned int size);
其作用:是在内存的动态存储区中分配一个长度为size的连续空间。
返回值:是一个指向分配域起始地址的指针(类型为void)。如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL)。
2、 calloc函数 :void *calloc(unsigned n,unsigned size);
作用:
在内存的动态存储区中分配n个长度为size的连续空间。
返回值:一个指向分配域起始地址的指针;
如果分配不成功,返回NULL。
用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为Size。

3、 free函数: void free(void *p);
作用:
释放由p指向的内存区,使这部分内存区能被其他变量使用。
p是最近一次调用calloc或malloc函数时返回的值。
free函数无返回值。
(四)共用体:使几个不同的变量共占同一段内存的结构称为 “共用体”类型的结构。
定义共用体类型变量的一般形式为:
union 共用体名

成员表列
}变量表列;
1、共用体和结构体的比较:
①结构体变量所占内存长度是各成员占的内存长度之和。
②每个成员分别占有其自己的内存单元。
③共用体变量所占的内存长度等于最长的成员的长度。
2、枚举:将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
①、申明枚举类型用enum
enum weekday{sun,mon,tue ,wed,thu,fri,sat}; 
②定义变量:
enum weekday workday,week-day;
enum{sun,mon,tue,wed,thu,fri,sat}workday;
注:变量值只能是sun到sat之一 。
3、用typedef定义类型的方法:
typedef struct info i
即struct info可以用i表示

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值