本文小编为大家详细介绍“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;}
效果:
一些写法
声明之后,可以立即创建实例。
也可以单独声明。
#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;}
效果:
读到这里,这篇“C语言结构体如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。