C语言学习 18-10-23

本文深入解析C语言中结构体的定义、使用及属性修改,包括结构体的声明、别名、变量声明、属性更改、指针应用及大小计算。通过实例演示结构体在实际编程中的灵活运用。

1.结构体

  1. 声明一个结构体

struct NAMENOTE
{
	int id;
	char *name;
	char *tel_num;
};
  1. 对结构体起“别名”

起别名即为使用typedef

typedef struct NAMENOTE
{
	int id;
	char *name;
	char *tel_name;
}NameNote;
  1. 声明一个结构体变量

(1).struct+结构体名+变量名 = {};
(2).结构体别名+变量名 = {};

struct NAMENOTE c= {1, "C", "111"};
NameNote python = {2, "python", "222"};
  1. 更改结构体的属性(结构体中的局部变量)

类似于python中的字典类型,不过是需要提前申明key值的字典,结构体的初始化相当于给字典的key值赋上value值,因此可对其中每一个属性进行改值操作。

c.id = 111;
c.tel_num = "110";
  1. 结构体的指针

NameNote *p_c = &c;
NameNote *p_python = &python;

通过指针修改结构体的属性:

//“笨”方法
(*p_c).id = 111;
(*p_c).name = "C_C++";
//结构体指针专有方法
p_c->id = 222;
p_c->name = "C++";
  1. 结构体的大小(结构体对齐)

对于一个结构体来说,其中具有各种各样的基本数据类型,那么该如何判断一个结构体类型所占空间的大小呢?
首先找出该结构体中所占空间最大的基本数据类型,按每行都具有该基本数据类型所空间大小顺序填充,每行不超过最大类型所占的空间。
比如1中所声明的结构体,其中占空间最大(32位)的是int,char *,都为4个字节,因此该结构体的大小为16字节。
查看结构体类型所占空间可以使用关键字sizeof。

例1.struct AA						struct BB
	{								{
		int a;							char a;
		double b;						int b;
		char c;							char c;
		char *d;						char *d;
	};								};

32位系统下。
解:AA中所占空间最大的基本数据类型是double,为8个字节,第三行的char c占一个字节,char *d占四个字节,第三行共有8个字节,可以装下c和d,故AA的大小为24字节;BB中所占空间最大的基本数据类型是int和char *,且都为4个字节,故BB占16字节空间。

例2:struct CC
	{
		int a;
		int b[5];
		char c;
	};

解:由于int b[5]不是基本数据类型,故最大为int,占4个字节,int b[5]共占20个字节,char c占4个字节,一共28字节。

经过上面两个例题可以说明为什么第六点着重强调基本数据类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值