【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)

简单不先于复杂,而是在复杂之后。

89efcc89ac61428db4d5b6639b2bd948.jpeg 

 

目录

1. 结构体的声明 

1.1 结构体的基础知识

1.2 结构的声明 

1.3 结构成员的类型 

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

2. 结构体成员的访问 

3. 结构体传参 


 

1. 结构体的声明 

1.1 结构体的基础知识

结构是一些值的集合,这些值称为成员变量。

结构的每个成员可以是不同类型的变量。 

1.2 结构的声明 

 

 【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)_第1张图片

 【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)_第2张图片

 【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)_第3张图片

p1 和 p2 是使用 struct Peo 结构类型创建的两个变量

p1 和 p2 是全局变量,但尽量不要使用。

【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)_第4张图片

struct Peo 是类型,不占内存空间。

p1 p2 是结构体变量

1.3 结构成员的类型 

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

【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)_第5张图片

 

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

【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)_第6张图片 

#define _CRT_SECURE_NO_WARNINGS 1
#include

struct Peo
{
	char name[20];
	char tele[12];
	char sex[5];
	int high;
}p3, p4;

struct Peo p5, p6;

struct St
{
	struct Peo p;
	int num;
	float f;
};

int main()
{
	struct Peo p1 = { "张三","123456677","男","181" };//结构体变量的初始化
	struct St s = { {"李四","1233244","女","166"}, 100,3.14f };

	return 0;
}

 

2. 结构体成员的访问 

结构体变量访问成员

结构体变量的成员是通过点操作符(.)访问的。

点操作符接受两个操作数。

例如:

 【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)_第7张图片

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

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

那么该如何访问成员?

如下:

 【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)_第8张图片

 

struct Peo
{
char name[20];
char tele[12];
char sex[5];
int high;
}p3,p4;

struct Peo p5, p6;

struct St
{
struct Peo p;
int num;
float f;
};

void print2(struct Peo* sp)
{
printf("%s %s %s %d\n", sp->name, sp->tele, sp->sex, sp->high);//结构体指针->成员变量
}

void print1(struct Peo p)
{
printf("%s %s %s %d\n", p.name, p.tele, p.sex, p.high);

}
int main()
{
struct Peo p1 = {"张三","123456677","男","181"};//结构体变量的初始化
struct St s = { {"李四","1233244","女","166"}, 100,3.14f};

printf("%s %s %s %d\n", p1.name, p1.tele, p1.sex, p1.high);//结构体变量.成员变量
printf("%s %s %s %d %d %f\n", s.p.name,s.p.tele,s.p.sex,s.p.high,s.num,s.f);

print1(p1);
print2(&p1);

return 0;
}

3. 结构体传参 

 【C语言】结构体(声明、定义、类型、定义及初始化、成员访问及传参)_第9张图片

函数传参的时候,参数是需要压栈的。

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

总结:结构体传参的时候,要传结构体变量的地址。

你可能感兴趣的:(C语言,c语言,c++,开发语言)