【C语言】结构体

结构体的声明

结构的基础知识

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

结构的声明和创建

  • 写法一:
cpp 复制代码
struct Book
{
	char name[20];     //成员变量1
	int price;         //成员变量2
};  
 
int main()
{
	struct Book b1;
	struct Book b2;
	return 0;
}

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

  • 写法二:
cpp 复制代码
struct Book
{
	char name[20];     //成员变量1
	int price;         //成员变量2
}b1,b2; 
 
int main()
{
	
	return 0;
}

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

  • 写法三:
cpp 复制代码
typedef struct Book
{
	char name[20];
	int price;
}Book;             //对这个类型重新命名为Book
 
int main()
{
	Book b1;      //这里的类型必须和声明时命名一致
	Book b2;
	return 0;
}
cpp 复制代码
struct Book
{
	char name[20];
	int price;
};
 
typedef struct Book Book;
 
int main()
{
	Book b1;
	Book b2;
	return 0;
}

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

结构成员的类型

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

cpp 复制代码
struct S 
{
	char c;
	char arr[10];
	int* p;
};
struct B
{
	int a;
	double d;
	struct S s;
};
 
int main()
{
 
	return 0;
}

结构体变量的定义和初始化

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

结构体成员的访问

  • 结构体变量访问成员

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

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

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

结构体传参

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

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

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

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

相关推荐
凉、介25 分钟前
深入 QEMU Guest Agent:虚拟机内外通信的隐形纽带
c语言·笔记·学习·嵌入式·虚拟化
你怎么知道我是队长1 小时前
C语言---输入和输出
c语言·开发语言
net3m331 小时前
单片机屏幕多级菜单系统之当前屏幕号+屏幕菜单当前深度 机制
c语言·c++·算法
你怎么知道我是队长1 小时前
C语言---文件读写
java·c语言·开发语言
wu_asia2 小时前
编程技巧:如何高效输出特定倍数数列
c语言·数据结构·算法
你怎么知道我是队长3 小时前
C语言---无名位域
c语言·开发语言
码农小韩5 小时前
基于Linux的C++学习——循环
linux·c语言·开发语言·c++·算法
Q741_1476 小时前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(2) 作答语言:C/C++ 哈夫曼编码 LRU
c语言·数据库·c++·算法·笔试·哈夫曼编码·哈夫曼树
你怎么知道我是队长6 小时前
C语言---位域
c语言·开发语言
爱吃生蚝的于勒8 小时前
【Linux】进程间通信之匿名管道
linux·运维·服务器·c语言·数据结构·c++·vim