struct tag
{
member - list;//成员变量的列表
}variable - list;//变量列表
结构体——结构体是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。数组——一组相同类型元素的集合(与结构体的区别)
为什么要出现结构体——当前学习过的类型都是内置类型
char short int double
对于复杂对象就需要用结构体了,比如说人——姓名+性别+年龄...
typedef struct Student
{
//学生的相关属性
char name[20];
int age;
char sex[5];
char telephone[12];
}Stu;
//是重命名产生的新的变量
int main()
{
struct Student s1, s2;//s1,s2是局部变量
Stu s5;
}
结构成员的类型——结构成员可以是标量、数组、指针,甚至是其他结构体
struct A
{
int a;
char d;
};
struct S
{
char c;
int num;
int arr[10];
double* pd;
struct A pa;
struct A* pb;
};
结构体成员的访问
结构体变量.成员名 结构体指针->成员名
struct S
{
char name[20];
int age;
};
void Set_S(struct S* ps)
{
strcpy(ps->name, "xiaome");
ps->age = 20;
}
void print_s(struct S* ps)
{
printf("%s %d\n", ps->name, ps->age);
}
int main()
{
struct S s = { 0 };//写一个函数给S中存放数据
Set_S(&s);
//写一个函数打印S中的数据
print_s(&s);
return 0;
}
注意:结构体传参的时候,要传结构体的地址。(函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候结构体过大,参数压栈的系统开销会比较大,因此会导致性能的下降)