面向对象和结构体有点像,所以专门对结构体做一下总结。
结构体就是一些基本的数据类型组合在一起形成一个新的数据类型。
结构体的定义:
定义结构体的方式可以分为三种:
1 定义一个数据类型
struct people
{
int weight;
float age;
char sex;
}
2 第二种方法
struct people
{
int weight;
float age;
char sex;
}peo;
3 第三种方式
struct
{
int weight;
float age;
char sex;
}peo;
结构体变量可以在定义的同时并赋给初值,如果定义之后只能单独赋初值。
关于结构体的调用
- 结构体变量名+成员名
- 指针变量名->成员名(一般使用第二种方式)
指针变量名->成员名 在计算机内部会被转化成(*指针变量名).成员名的方式来执行,所以说这两种方式是等价的。
struct Student
{
int age;
float score;
char sex;
};
int main(void)
{
struct Student st ={80,66.6,'F'};//初始化,定义的同时赋值
struct Student *pst=&st;//&st不能改成st
pst->age=99;//第二种方式
st.age=10;//第一种方式
return 0;
}
- pst->age 在计算机内部会被转化成(*pst).age,这就是->的含义,这也是一种硬性规定
- pst->等价于(*pst).age也等价于st.age
- 我们之所以知道pst->age等价于st.age,是因为pst->是被转化成了(*pst).age来执行
- pst->age的含义:pst所指向的那个结构体变量中的age这个成员
结构体变量和结构体指针变量作为函数参数传递的问题,一般我们可以使用结构体指针变量作为函数参数来传递结构体变量的运算,结构体变量不能相加,不能相减,也不能相乘除,但结构体变量可以相互赋值
struct Student
{
int age;
char sex;
char name[100];
};//分号不能省略
struct Student st1,st2;
st1=st2;//或st2=st1;