一、定义:
struct 结构体名{
成员列表;
}; //注意此处的分号不能省
结构体变量定义:
1)先定义结构体,然后在定义结构体变量
//注意:
1)结构体定义完成以后,计算机并不会给结构体分配内存空间
2)会在定义结构体变量后,分配存储空间
//结构体变量定义格式:
struct 结构体名 结构体变量名;
2)定义结构体的同时,定义结构体变量
格式:
struct 结构体名{
成员列表;
}结构体变量1,结构体变量2....;
3)使用匿名结构体定义结构体变量
struct {
成员列表;
}结构体变量1,结构体变量2....;
二、结构体成员的访问
方法:结构体变量名.成员变量
注意:如果成员变量中有字符数组,则在对其进行初始化的时候,不能将一个字符串直接赋值给该
字符数组,而应该用strcpy函数对其进行赋值
范例:
struct Student{
//学生学号
int sno;
//学生姓名
char name[21];
//学生年龄
int age;
}stu3;
//先定义结构体变量,然后再初始化
struct Student stu1;
//给结构体变变量初始化
stu1.sno = 38;
stu1.age = 18;
stu1.name="张三丰";//该语句报错,因为name是数组名称,是一个常量,不能对其赋值
//应该采用如下方法对其赋值
strcpy(stu1.name, "张三丰");
//定义结构体的同时,还可以指定元素的部分初始化
struct Student stu2={.name = "lady Gaga"};
//若结构体变量在定义的时候没有进行初始化,在定义后对其初始化的时候不能直接用大括
号对其赋值,若非要用,则必须将其强制转换成该结构体变量类型在赋值给结构体变量
stu3 = {12345,"张三丰",18};//这条语句会报错,不能这样为结构体赋值
//应该用下面的格式为结构体变量赋值
stu3 = (struct Student){12345,"张三丰",18};
三、结构体指针
定义:指向结构体变量的指针
使用结构体指针访问结构体变量的成员有两种方式:
1)*结构体指针变量名.成员名
2)结构体变量指针->成员名
范例:
struct Student{
//学生姓名
char name[21];
//学生年龄
int age;
}stu1={"zhangsan",18},*p=NULL;
p = &stu1;
printf("%s",p->name);
printf("%d",*p.age);
//注意:只有结构体指针才能使用p->name这种方式访问成员,不能直接使用结构体变量
名这样访问
四、结构体嵌套
定义:一个结构体变量是另一个结构体定义时候的成员
注意:1)定义结构体时不能嵌套自己的结构体变量
2)可以嵌套自己的结构体指针变量
|
|