#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//---------------------------------------------------------------------------------------------------BIT-7-结构体
1.结构体的声明
1.1结构的基础知识
1.2结构的声明
1.3结构成员的类型
1.4结构体变量的定义和初始化
2.结构体成员的访问
3.结构体传参
//-----------------------------------------------------------------------------------------------------1.结构体的声明
//--------------------------------------------------------------------------------------------1.1结构的基础知识
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
//--------------------------------------------------------------------------------------------1.2结构的声明
结构体类型的声明
struct Peo
{char name[20];//名字char tele[12]; //电话号char sex[5]; //性别int hign; //身高
}p1, p2; //p1,p2是利用 struct Peo 结构体类型所创建的2个变量,是全局变量
//尽量少用全局变量,故
struct Peo
{char name[20];char tele[12]; char sex[5]; int hign;
};
//结构的嵌套
struct St
{struct Peo p;int num;float f;
};
int main()
{struct Peo p1; //结构体变量的创建// struct Peo----结构体类型// p1-----结构体变量return 0;
}
//--------------------------------------------------------------------------------------------1.3结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体。
//---------------------------------------------------------------------------------1.4结构体变量的定义和初始化
//-------------------------------结构体变量的创建
struct Peo
{char name[20];char tele[12]; char sex[5]; int hign;
}p2, p3; //----全局变量struct Peo p4, p5; //----全局变量int main()
{struct Peo p1; //结构体变量的创建----局部变量return 0;
}
struct Peo
{char name[20];char tele[12];char sex[5];int high;
};
struct St
{struct Peo p;int num;float f;
};
//-----------------------------------------------------------------------------------------------2.结构体成员的访问
结构体成岩访问的操作符(2个 )
操作符1------结构体变量 . 成员变量
操作符2------结构体指针->成员变量
void print1(struct Peo p)
{printf("%s %s %s %d\n", p.name, p.tele, p.sex, p.high); // 结构体变量 . 成员变量
}
void print2(struct Peo* sp)
{printf("%s %s %s %d\n", sp->name, sp->tele, sp->sex, sp->high); // 结构体指针->成员变量}
int main()
{//----------------------------------------------------------------------------结构体变量的初始化+打印//结构体变量的初始化struct Peo p1 = { "张三","13633552404","男",181 }; //结构体嵌套的初始化struct St s = { {"李四","18822732292","女",166},100,3.14 }; //浮点数在内存中,不能精确保存//结构体的打印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);//-----------------------------------------------------------------------------------------------------------3.结构体传参 //传结构体 变量本身print1(p1); //传结构体 地址print2(&p1);//传参首选print2//因为函数传参时,函数是需要压栈的//如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降//因此:结构体传参的时候,要传结构体的地址。return 0;
}