C语言简明清晰讲解结构体

2022-05-05 11:28:08
目录
本质
简单使用
一些写法
我套我自己
内存对齐
举例-int char char
举例-char int char
举例-char char int
由结构体指针访问成员

本质

一些值的集合。

简单使用

#include>效果:

在这里插入图片描述

一些写法

声明之后,可以立即创建实例。

也可以单独声明。

#include>匿名结构体:我用了,你们别想再用。

struct { char uName[20]; char uPass[20]; }x;

我套我自己

只能套指针,因为空间有限。

举例:链表。

#include>www.easck.comain() { struct Node a = { 333,NULL }; struct Node b = { 666,&a }; printf("%dn", (*b.next).val); return 0; }

效果:

在这里插入图片描述

内存对齐

结构体放成员,是一个一个放的。

第一个放到首个地址处。

第二个开始,计算一个对齐数,该数是以下两个值的http://www.easck.com较小者:

1,VS的默认值,8。

2,该成员所占字节数。

实际的偏移量是对齐数的整数倍。

最后,结构体的大小是最大对齐数的整数倍。

举例-int> #include <stdio.h> struct A { int a; char b; char c; }; int main() { struct A a = { 1,1,1 }; printf("%lld", sizeof(a)); return 0; }

效果:8

在这里插入图片描述

图解:

int放在首位。

char占1字节,直接放。

第二个char也是。

最后长度,按int的字节数的整数倍,也就是8。

在这里插入图片描述

举例-char> #include <stdio.h> struct A { char b; int a; char c; }; int main() { struct A a = { 1,1,http://www.easck.com1 }; printf("%lld", sizeof(a)); return 0; }

效果:12

在这里插入图片描述

图解:

char直接放。http://www.easck.com

int从第四个开始放。

char直接放。

最后长度:从9开始第一个4的倍数,12。

在这里插入图片描述

举例-char> #include <stdio.h> struct A { char b; char c; int a; }; int main() { struct A a = { 1,1,1 }; printf("%lld", sizeof(a)); return 0; }

效果:8

在这里插入图片描述

图解:两个char直接放。

int从下一个4的整数倍,也就是第五个开始放。

最后长度:从8开始第一个4的倍数,8。

在这里插入图片描述

由结构体指针访问成员

就是一种箭头的写法。

#include>效果:

在这里插入图片描述

到此这篇关于C语言简明清晰讲解结构体的文章就介绍到这了,更多相关C语言结构体内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!