关于C语言的点点滴滴—结构体

【1】结构体:(构造数据类型)

1.概念:结构体是用户自定义的新数据类型,在结构体中可以包含若干个不同数据类型和不同意义的数据项(当然也可以相同),从而使这些数据项组合起来反映某一个信息。

2.结构体类型的定义:(用户自行定义该类型)
struct 结构体名
{
数据类型   成员名1;
数据类型   成员名2;

数据类型   成员名n;
};

【2】结构体变量:

 1)先定义结构体类型再定义变量名
struct 结构体名
{
         成员列表;
};
struct 结构体名 变量名;
 2)定义类型的同时定义变量
struct 结构体名
{
	成员列表;
}变量名; 
 3)直接定义结构类型变量(只能作为全局变量)
struct      //没有结构体名
{
		成员列表
}变量名; 
注意:如果有结构体名在定义结构体变量时一定要写struct关键字和结构体名

【3】结构体初始化

1)结构体初始化方式与数组初始化方式相似。适用于定义结构体变量的同时初始化。
	一个位于一个花括号内部,由逗号分隔的初始值列表可用于结构的初始化。这些值根据结构体成员列表顺序写出。
	例如:
	struct student
	{
		int num;
		char name[20];
	}stu={2019,"xiaoming"};

注意:
1.数组不可以整体赋值,可整体初始化。同理,结构体不可整体赋值,可以整体初始化。结构体地址数值等于第一个成员地址数值。
2.在数组中,数组不能彼此赋值,而结构体类型变量可以彼此赋值,但是要同一结构体类型:
struct st1,st2;若st1初始化完毕,可以st2 = st1,将st1整体集合赋给st2.
注意:

1.不能将一个结构体类型变量作为一个整体加以引用,而只能对结构体类型变量中的各个成员分别引用
2.如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级成员。
3.对成员变量可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)
4.在数组中,数组是不能彼此赋值的,而结构体类型变量可以相互赋值。
5.结构体自引用只能自引用该结构体类型指针(结构体在定义时自引用无法确定结构体大小,无法开辟空间,只能开辟四个字节的指针即地址。)

【4】结构体数组:
1.定义:具有相同结构体类型的结构体变量也可以组成数组,称它们为结构体数组。
结构体数组的每一个数组元素都是结构体类型的数据,它们都分别包括各个成员(分量)项。
2.结构体数组的定义格式:

1)先定义结构体类型,再用它定义结构体数组。
struct 结构体名	
{
		成员表列;
};
struct 结构体名 数组名[下标];
       
2)在定义结构体类型同时定义结构体数组。	
struct 结构体名	
{
		成员表列;
}数组名[元素个数];

3)直接定义结构体数组
struct             //没有结构体名
{
		成员表列;
}数组名[元素个数];

【5】结构体指针:
1.定义:可以设定一个指针变量用来指向一个结构体变量。此时该指针变量的值是结构体变量的起始地址,该指针称为结构体指针。
2.格式:
struct 结构体名 *结构指针名;
3.引用:
结构体指针名->成员名
(*p).name 或 p->name
注意:当定义结构体指针时,只给指针分配了一段空间,并没有给结构体内成员分配空间,需要使用malloc分配空间。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值