C语言结构体如何使用

发布时间:2022-05-07 15:09:47 作者:iii
来源:亿速云 阅读:175

本文小编为大家详细介绍“C语言结构体如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“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;
}

效果:

C语言结构体如何使用

一些写法

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

也可以单独声明。

#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;
}

效果:

C语言结构体如何使用

内存对齐

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

第一个放到首个地址处。

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

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

C语言结构体如何使用

图解:

int放在首位。

char占1字节,直接放。

第二个char也是。

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

C语言结构体如何使用

举例-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

C语言结构体如何使用

图解:

char直接放。

int从第四个开始放。

char直接放。

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

C语言结构体如何使用

举例-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

C语言结构体如何使用

图解:两个char直接放。

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

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

C语言结构体如何使用

由结构体指针访问成员

就是一种箭头的写法。

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

效果:

C语言结构体如何使用

读到这里,这篇“C语言结构体如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. C语言之结构体以及结构体对齐访问
  2. C语言结构体struct怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言

上一篇:javascript函数使用时需注意哪些事项

下一篇:Pytorch搭建YoloV5目标检测平台实现的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》