结构体类型的声明
结构的基础知识
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。在实际生活中,实际上有很多的复杂对象,他要用各种数据来描述,例如,描述一个人,需要描述他的姓名、年龄、性别、电话号码、身高、体重等等,此时定义的单一的变量类型是不足以描述它的,这个时候就有了结构体,我们可以把结构体当作是一组用于描述同一对象的不同数据类型的集合,接下来我们将进一步理解。
结构的声明
语法结构:
示例:
//1、最常使用
struct peo
{
char name[20];
char tele[13];
char sex[5];
int hight;
};//注意这里的分号千万不要丢
//2、直接在声明结构体时定义结构体变量
struct peo
{
char name[20];
char tele[13];
char sex[5];
int hight;
}p1,p2;
//p1和p2是用struct peo 这一结构体类型创建的结构体变量
//这样创建的结构体变量是全局变量,尽量不要这样创建
结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体。
//结构体成员也可以包含结构体
struct peo
{
char name[20];
char tele[13];
char sex[5];
int hight;
};
struct stu
{
struct peo p2;
float score;
};
结构体变量的定义及初始化
前面在结构体声明部分我们说过了定义结构体变量可以直接在声明之后进行,接下来我们来看另一种情况,在函数内部定义结构体变量,我们把在定义结构体变量时给其成员赋值的过程称为结构体的初始化。
struct peo
{
char name[20];
char tele[13];
char sex[5];
int hight;
};
struct stu
{
struct peo p2;
float score;
};
int main()
{
struct peo p1 = { "张三","13187652435","男",183 };//定义了结构体变量p1,同时进行了结构体初始化
struct stu s = { {"李四","18927365436","女",164},65.8 };//当有嵌套的结构体时定义和初始化也类似
return 0;
}
结构体成员访问
1、结构体变量访问结构体成员:用'.'操作符来访问
格式:结构体变量名.结构体成员名
如下例:
2、结构体指针访问指向变量的成员:用'->'操作符来访问
格式:结构体指针->结构体成员
如下例:
结构体传参
我们在结构体访问方式中的例子其实就涉及了结构体传参的两种方式,一种是直接传结构体,一种是传结构体的地址,那究竟哪一种方式更好一些呢?我们首选传地址(这里可以类比数组传参传首元素地址去理解)
原因:
函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。
结论:
结构体传参的时候,最好传结构体的地址。
至此其实C语言打地基阶段的所有学习内容都已经全部更新完毕了,这一系列囊括了C语言所有重点基础知识,个人认为如果仅仅针对于大学的期末考试,看到这里已经可以游刃有余了,但并不是说我们C语言的学习可以止步于此了,要实现今后对C语言的应用,还要进一步学习进阶课程,同样,我会持续更新进阶课程的内容,当然,怎么检测我们初级阶段的学习成果呢?相关的作业练习是必不可少的,之后我将会更新我的作业合集,大家也可以参考用于巩固,我们进阶课程再见吧!