C语言 | 结构体与共用体介绍

本文详细介绍了C语言中的结构体和共用体的使用规则和特性。包括结构体的定义、初始化、成员访问、指针操作以及结构体作为参数的效率考虑。同时,对比了结构体和共用体的区别,强调共用体成员共享内存的特点,适合表达互斥概念。此外,还讨论了结构体和共用体在内存对齐和大小计算上的规则。
摘要由CSDN通过智能技术生成

1.结构体不能包含函数。

2.结构体用“.”,结构体指针用“->”。

3.定义结构体变量的三种方式:

(1):先定义结构体类型再定义结构体变量。

(2):定义结构体类型的同时定义结构体变量。

(3):直接定义结构体变量,只有关键字struct,没有结构名,由于没有结构名,在此定义语句后面无法再定义这个类型的其他结构变量,除非把定义过程再写一遍。(不建议使用)

4.结构体有三种初始化方式:

struct peolpe

{

int age;

char name[];

float height;

 

};

(1): struct people xiaoming;

xiaoming.age=18;

strncpy(xiaoming.name,"xiaoming");

xiaoming.height=175.5;

(2): struct people xiaohong={18,"xiaohong",165.5};

(3): struct people xiaoli

{

.age=18;

.name="xiaoli";

.height=170.5;

};

5.结构体指针:跟普通指针一样,可以箭头"->"更方便;

struct people *p;

p=&xiaoming;

(*p).age=18;

或 p->age=18;

6.考虑到效率问题,一般不把结构体直接作为参数或者返回值,而是会传递结构体的地址(指针)。

7.计算结构体大小:按4字节对齐,两个坑放得下,绝不放三个坑。

struct people

{

int a;

double b;

char c;

}x; //大小为:4+8+4=16(字节);

 

8.共用体和结构体类似,结构体成员独立,而共用体成员不独立,它们共用内存。适合用来表达一些互斥的概念,比如一件衣服的颜色属性,要不就是红要不就是白,不可能既红又白。一个进程的状态,要不就是运行要不就是睡眠,不可能既运行又睡眠。

union people

{

int age;

char name[];

float height;

}x; //大小取最大的那个类型:4(字节)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值