【C语言】结构体

文章详细介绍了C语言中的结构体,包括结构体的声明和创建(局部/全局变量),成员的类型(标量、数组、指针、其他结构体),以及结构体变量的初始化。同时,讨论了如何通过点操作符访问结构体成员,结构体作为参数传递时应传地址以优化性能。

🚀🚀🚀大家好,我是FLASH。这篇博客会为大家讲解结构体一章的内容,如果大家喜欢我的作品,请留下你的一键三连,这也是对我最大的鼓舞🚀🚀🚀 

我们发现C语言规定的常规数据类型不足以描述生活中某些对象,所以引出结构体一词来全面地描述这些信息,本文内容如下:

  • 结构体类型的声明
  • 结构体初始化
  • 结构体成员访问
  • 结构体传参

目录

🌻1. 结构体的声明 🌻

🌻1.1 结构的基础知识

🌻1.2 结构的声明和创建

🌻1.3 结构成员的类型

🌻1.4 结构体变量的初始化

🌻2. 结构体成员的访问 🌻

🌻3. 结构体传参🌻


🌻1. 结构体的声明 🌻

🌻1.1 结构的基础知识

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。

🌻1.2 结构的声明和创建

  • 写法一:
struct Book
{
	char name[20];     //成员变量1
	int price;         //成员变量2
};  

int main()
{
	struct Book b1;
	struct Book b2;
	return 0;
}

🌸这里创建的b1,b2是局部变量。

  • 写法二:
struct Book
{
	char name[20];     //成员变量1
	int price;         //成员变量2
}b1,b2; 

int main()
{
	
	return 0;
}

🌸这里创建的b1,b2是全局变量。

  • 写法三:
typedef struct Book
{
	char name[20];
	int price;
}Book;             //对这个类型重新命名为Book

int main()
{
	Book b1;      //这里的类型必须和声明时命名一致
	Book b2;
	return 0;
}
struct Book
{
	char name[20];
	int price;
};

typedef struct Book Book;

int main()
{
	Book b1;
	Book b2;
	return 0;
}

🌸这样两种写法都可以,这里创建b1,b2时可以不加前面的struct。

🌻1.3 结构成员的类型

结构的成员可以是标量、数组、指针,甚至是其他结构体。

struct S 
{
	char c;
	char arr[10];
	int* p;
};
struct B
{
	int a;
	double d;
	struct S s;
};

int main()
{

	return 0;
}

🌻1.4 结构体变量的初始化

初始化:定义(创建)变量的同时赋初值。

🌻2. 结构体成员的访问 🌻

  • 结构体变量访问成员

🌰 结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数。👇

  • 结构体指针访问指向变量的成员

🌰 有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针。👇 

🌻3. 结构体传参🌻

结构体传参的时候,要传结构体的地址。

🌰 结构体传参传结构体变量的缺点。👇

🌸函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。

所以结构体传参优先传结构体地址!!!

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值