1.结构体的声明
结构是一些值的结合,这些值称为成员变量。结构的每个成员可以是不同类型的变量,例如标量、数组、指针甚至是其他结构体。
//声明结构体学生
struct Stu
{
//成员
char name[20];
int age;
char sex[10];
char tele[13];
};
2.结构体变量的定义和初始化
//声明的同时定义变量g1
struct Goods
{
char name[30];
float price;
int num;
}g1;
//定义变量g2
struct Goods g2;
//定义变量并赋值
struct Goods g3 ={"clothes",88.9,321448573};
3.结构体成员的访问
结构体变量的成员是通过点操作符访问的,点操作符接受两个操作数。
struct Goods G1={"box",9.9,1239788};
printf("%.2f",G1.price)//使用.访问price成员
G1.name="pen";//使用.访问name成员
结构体指针访问指向变量的成员
struct Stu
{
char name[20];
int age;
};
void print(struct Stu* a1)
{
使用结构体指针访问指向对象的成员
printf("name=%s age=%d\n",(*a1).name,(*a1).age);
printf("name=%s age=%d\n",a1->name,a1->age);
}
int main()
{
struct Stu s1={"zhangsan",16};
print(&s1);//结构体地址传参
return 0;
}
4.结构体的传参
结构体传参的时候,要传结构体的地址,才不会在结构体过大时导致性能下降。
struct Goods
{
char name[30];
float price;
};
struct Goods a1={"pen",3.88};
void print1(struct Goods g1)//结构体传参
{
printf("price=%.2f",g1.price);
}
void print2(struct Goods *g2)//结构体地址传参
{
printf("price=%.2f",g2->price);
}
int main()
{
print1(a1);//传结构体
print1(&a1);//传结构体地址
return 0;
}