「这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战」。
怎样使用结构体变量
赋值和初始化
# include<stdio.h>
struct Student
{
int age;
float score;
char sex;
};
int main(void)
{
struct Student st1 = {1,5.5,'A'};
struct Student st2;
st2.age = 10;
st2.score = 66;
st2.sex = 'A';
printf("%d %f %c\n",st1.age,st1.score,st1.sex);
printf("%d %f %c\n",st2.age,st2.score,st2.sex);
}
该代码中的第一段只是定义了一个新的数据类型,并没有定义变量!
定义的同时可以整体赋初值
如果定义完之后,则只能单个的赋初值
struct Student * pst = &st1;//&st不能改成st
pst->age = 20;//在计算机内部会被转化成(* pat).age,也等价于st.age。
而我们之所以知道pst->age等价于st.age,是因为pst->age是被转化成了(* pst).age来执行
如何去除结构体变量中的每一个成员
1.结构体变量名.成员名
2.指针变量名->成员名//在计算机内部会被转化成(* 指针变量名).成员名的方式来执行。
所以说这两种方式是等价的。
3.pst->age的含义:pst所指向的那个结构体变量中的age这个成员。
结构体变量和结构体变量指针作为函数参数传递的问题
推荐使用结构体变量作为函数参数传递的问题
结构体变量的运算
结构体变量不能相加,不能相减,也不能相互乘除,但结构体变量可以相互赋值。
例子:
结构体变量输入:InputStudent(&st);
结构体变量输出:OutputStudent(st);
指针的优点之一:
快速的传递数据,耗用内存小,执行速度快。
举例
冒泡排序
void sort(int * pArr,int len)
{
int i,j,t;
for(i = 0;i<len-1;i++)
{
for(j = 0;j<len-1-i;j++)
{
if(a[j]>a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
int main(void)
{
int a[6] = {2,6,9,-8,0,-3};
int i = 0;
sort(a,6);
for(i = 0;i<6;i++)
{
printf("%d",a[i]);
}
printf("\n");
return 0;
}
动态构造存放学生信息的结构体数组 动态构造一个数组,存放学生信息 然后按分数排序输出 枚举: 什么是枚举
把一个事物所有可能的取值一一列举出来
怎样使用枚举
枚举优缺点
代码更安全,书写麻烦