前面在学习枚举类型enum时就觉得有些不习惯,那里习惯理解了的话,到结构体这里的理解就更方便些了,因为两者有一些相似的地方。
//用结构体登记一个学生的姓名和分数,如果小于60分,显示bad
#include <stdio.h>
typedef struct{
char name[20];
float points;
char *appraise; //这里用字符型指针,如果用普通字符串,外面无法赋值
} students; //结构体里面的参数也可以是结构体 ,用的时候用多个点号连接起来
//定义一种结构体,typeof 数据 标签名,这里用typeof定义这个结构体为students
//也可以这样定义
struct students{ //用这种定义的话,后边的变量声明都要是 struct students ,比如main里的 lucky 要写成struct students lucky
char name[20]; //如果用typedef就可以取一个更方便的名字,来指代struct students
float points;
char *appraise;
};
students give_appraise(students *s){//如果前面不用typedef定义,这里都得用struct students
if(s->points<60)
s->appraise="bad"; //这里传递进来的是*s指针时才可以用s->这种箭头表示法,如果是只传递 s,得用s.appraise,同时还得return出去,虽然不像数组那样不可以返回,但这样明显没有指针操作方便
else
s->appraise="good"; // 这种指针操作也可以写出 (*s).appraise 必须加括号因为.的优先级大于*
}
int main(void){
students lucky = {"lucky",49,""};
give_appraise(&lucky); //传递结构体的地址
printf("%s",lucky.appraise);
return 0;
}