- 一、为什么会出现结构体
- 二、结构体定义
- 三、使用1---普通结构体变量
- 1、定义结构体变量
- 2、创建结构体变量
- 3、访问结构体成员
- 四、使用2---指针结构体变量
- 1、创建结构体变量
- 2、赋值
- 3、访问
- 五、注意事项
- 六、通过函数修改结构体变量的值
为了表示一些复杂的数据,而普通的基本类型变量无法满足要求。
二、结构体定义例如描述一个班级的学生信息(学号、姓名、年级、性别。。。),单纯的基本数据类型变量很容易将张三的姓名匹配到李四的学号,不易区分。故使用结构体可满足。
类里面有属性和方法,结构体里只有属性。
用户根据实际需要自己定义的复合数据类型
//结构体
struct Student {
int sid;
char name[200];
int age;
};
2、创建结构体变量
数据类型(struct) 结构体名 变量名={赋值}
//创建结构体变量:数据类型 结构体名 变量名={赋值}
struct Student st ={1001,"aa",21};
3、访问结构体成员
结构体变量名.成员名
//访问结构体成员:结构体变量名.成员名
printf("%d %s %dn",st.sid,st.name,st.age);
完整代码:
//结构体
struct Student {
int sid;
char name[200];
int age;
};
int main (void)
{
//定义结构体变量:数据类型 结构体名 变量名={赋值}
struct Student st ={1001,"aa",21};
//访问结构体成员:结构体变量名.成员名
printf("%d %s %dn",st.sid,st.name,st.age);
return 0;
}
四、使用2—指针结构体变量
1、创建结构体变量
//指针结构体变量 struct Student *pst;2、赋值
//赋值:pst指向st pst=&st;3、访问
结构体指针变量名->结构体成员名
//访问:pst->sid==>(*pst).sid==>st.sid
printf("sid=%dn",pst->sid);
printf("sid=%dn",(*pst).sid);
printf("sid=%dn",st.sid);
//结构体
struct Student {
int sid;
char name[200];
int age;
};
int main (void)
{
//定义结构体变量:数据类型 结构体名 变量名={赋值}
struct Student st ={1001,"aa",21};
//访问结构体成员:结构体变量名.成员名
//printf("%d %s %dn",st.sid,st.name,st.age);
//指针结构体变量
struct Student *pst;
//赋值:pst指向st
pst=&st;
//访问:pst->sid==>(*pst).sid==>st.sid
printf("sid=%dn",pst->sid);
printf("sid=%dn",(*pst).sid);
printf("sid=%dn",st.sid);
return 0;
}
五、注意事项
- 结构体变量不能加减乘除,但可以相互赋值(st1=st2)
使用普通变量当参数时,占内存、耗时间,
参数为地址,不占用内存。
//结构体
struct Student {
int sid;
char name[200];
int age;
};
void fpst(struct Student *pst)
{
(*pst).age=22;
pst->sid=1002;
strcpy(pst->name,"xiaowang");
}
int main (void)
{
//定义结构体变量:数据类型 结构体名 变量名={赋值}
struct Student st ={1001,"aa",21};
//传参变量地址
fpst(&st);
//访问结构体成员:结构体变量名.成员名
printf("%d %s %dn",st.sid,st.name,st.age);
return 0;
}



