结构的声明结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
struct tag
{
member-list;
}variable-list;
//struct 结构体关键字 struct Stu - 结构体类型
struct Stu
{
char name[20];
short age;
char tele[12];
char sex[5];
}s1,s2,s3;// 在定义结构体之后,直接创建了三个全局的结构体变量
int main()
{
struct Stu s;
return 0;
}
//typedef 给struct Stu 结构体类型,重新起了一个别名Stu,可以直接使用这个别名创建新的对象
typedef struct Stu
{
char name[20];
short age;
char tele[12];
char sex[5];
}Stu;
int main()
{
Stu s = {"Jack",23,"13530325097","male"};
return 0;
}
结构成员类型
结构的成员可以是标量,数组,指针,甚至是其他的结构体。
结构体变量的初始化结构体成员的访问Stu s = {"Jack",23,"13530325097","male"};
在结构体变量创建的时候使用 { } 往里面填写结构体成员变量的值的方式给结构体变量进行初始化。
- 结构体变量访问成员是通过点操作符(.)访问的
- 结构体指针访问成员变量通过(->) 访问
#includetypedef struct Stu { char name[20]; short age; char tele[12]; char sex[5]; }Stu; void print(Stu s) { printf("name: %sn", s.name); printf("age : %dn", s.age); printf("tele: %sn",s.tele); printf("sex : %sn",s.sex); } void print1(Stu* ps) { printf("name: %sn", ps->name); printf("age : %dn", ps->age); printf("tele: %sn", ps->tele); printf("sex : %sn", ps->sex); } int main() { Stu s = {"Jack",23,"13530325097","male"}; print(s); print1(&s); return 0; }
使用两种方式来进行结构体传参,print()方法转递的结构体变量,我们知道使用传值的方式进行函数传参时,形参是实参的一份临时空间拷贝,会开辟出一块新的空间将实参里面内容进行拷贝,如果结构体很大,数据量很多,系统的内存开销会增大很多,而且复制内容所需要的时间也很多,会导致程序性能的降低
所以在结构体传参的时候,要传结构体的地址。
文章是基于比特鹏哥C语言学习视频的学习笔记,仅用于学习。请勿转载,请勿商用



