C语言——结构体(2)

抱歉这么久才更第二期  (是我怠惰了<_>)话不多说 上期说到结构体的自引用 接下来继续

正片开始:

1.结构体变量的创建和初始化

在有了结构体类型下,如何定义变量,结构体变量的初始化使用也很重要

举例说明

 #define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

struct Point
{
	int x;
	int y;
}p1;//声明类型的同时定义变量p1
struct Point p2;//定义结构体变量


//初始化:定义变量的同时赋初值。
struct Point p3 = {10,20};
struct Stu//类型声明
{
	char name[15];//名字
	int age;

};
struct Stu s = {"zhangsan", 20 };//初始化

struct Node
{
	int data;
	struct Point p;
	struct Node* next;
}n1 = { 10, {4,5}, NULL };//结构体嵌套初始化


struct Node n2 = { 20, {5, 6}, NULL };//结构体嵌套初始化

如上所见 结构体是这么进行变量创建的 (其实也就是把结构体嵌套发扬光大),这在后面数据结构也会经常使用

2.结构成员访问操作符

结构体操作访问符有两个 分别是 

.

和 

->

具体操作如下

1.结构体变量.成员变量名

2.结构体指针->成员变量名

也是 举例说明 :

struct Stu
{
	char name[20];
	int age;
};

void set_stu(struct Stu*ps)
{
	strcpy(ps->name, "李田所");//用->访问结构体
	ps->age = 24;
}

void print_stu(struct Stu s)
{
	printf("%s",s.name,s.age );//用.访问结构体
}

int main()
{
	struct Stu a = { "原野",23 };
	print_stu(a);
	set_stu(&a);


	return 0;
}

 3.结构体内存对齐

在掌握了结构体的基本使用后 那就开始深入讨论关于计算结构体的大小

  其中 重要的一点就是 结构体对齐

3.1.对齐的规则

首先 介绍以下结构体对齐的规则 

1. 结构体的第⼀个成员对齐到相对结构体变量起始位置偏移量为0的地址处

2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。

对齐数=编译器默认的⼀个对齐数与该成员变量大小的较小值。

-VS默认对齐数为8

-Linux中没有默认对齐数与该成员变量大小的较小值

3. 结构体总大小为最大对齐数(结构体中每个成员变量都有⼀个对齐数,所有对齐数中最大的)的 整数倍

4.如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数整数倍处,结构 体的整体大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>