欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

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

时间:2022-09-19 09:28:36|栏目:C代码|点击:

本质

一些值的集合。

简单使用

#include <stdio.h>
struct User {
	char uName[20];
	char uPass[20];
};
int main() {
	struct User u1 = {
		"abc","123"
	};
	printf("%s\n", u1.uName);
	printf("%s\n", u1.uPass);
	return 0;
}

效果:

在这里插入图片描述

一些写法

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

也可以单独声明。

#include <stdio.h>
struct User {
	char uName[20];
	char uPass[20];
} u1, u2, u3;
struct User u4;
int main() {
	struct User u5;
	return 0;
}

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

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

我套我自己

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

举例:链表。

#include <stdio.h>
struct Node {
	int val;
	struct Node* next;
};
int main() {
	struct Node a = { 333,NULL };
	struct Node b = { 666,&a };
	printf("%d\n", (*b.next).val);
	return 0;
}

效果:

在这里插入图片描述

内存对齐

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

第一个放到首个地址处。

第二个开始,计算一个对齐数,该数是以下两个值的较小者:

1,VS的默认值,8。

2,该成员所占字节数。

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

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

举例-int char char

#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 int char

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

效果:12

在这里插入图片描述

图解:

char直接放。

int从第四个开始放。

char直接放。

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

在这里插入图片描述

举例-char char int

#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 <stdio.h>
struct A {
	int a;
};
int main() {
	struct A a = { 333 };
	struct A* b = &a;
	printf("%d\n", b->a);
	return 0;
}

效果:

在这里插入图片描述

上一篇:基于opencv的行人检测(支持图片视频)

栏    目:C代码

下一篇:Qt一个进程运行另一个进程的实现方法

本文标题:C语言简明清晰讲解结构体

本文地址:http://www.codeinn.net/misctech/214117.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有