1.结构体的声明
1.1结构体的概念
结构是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量
1.2结构的声明
声明方法一:

声明方法二:

1.3结构成员的类型
结构的成员可以是数组,指针,甚至可以是其他结构体(结构体嵌套)
1.4结构体的定义和初始化
结构体的定义就是创建结构体变量,就像在盖房子一样


初始化:就是在定义变量的时候同时赋值
struct Point
{
int x;
int y;
}p1; //声明类型的同时定义变量p1
struct Point p2; //定义结构体变量p2
//初始化:定义变量的同时赋初值
struct Point p3 = {x, y};
struct Stu //类型声明
{
char name[15];//名字
int age; //年龄
};
struct Stu s = {"zhangsan", 20};//初始化
struct Node
{
int data;
struct Point p;
struct Node* next;
}n1 = {10, {4,5}, NULL}; //结构体嵌套初始化
struct Node n2 = {20, {5, 6}, NULL};//结构体嵌套初始化
2.结构体成员的访问
方法一: 结构体变量.成员变量
方法二:指针变量->成员变量
struct Stu
{
char name[20];
int age;
};
void print(struct Stu* ps)
{
printf("name = %s age = %d\n", (*ps).name, (*ps).age);
//使用结构体指针访问指向对象的成员
printf("name = %s age = %d\n", ps->name, ps->age);
}
int main()
{
struct Stu s = {"zhangsan", 20};
print(&s);//结构体地址传参
return 0;
}
3.结构体传参
#include <stdio.h>
struct book
{
char name[20];
int price[3];
};
void print1(struct book s)
{
printf("%d\n",s.price);
}
void print2(struct book*s)
{
printf("%s\n",s.name);
}
int main()
{
struct book s={"《钢铁是怎样炼成的》",28}
print1(s);//传值
print2(&s);//传址
return 0;
}

至于压栈后面会详细讲到