C博客作业06-结构体&文件

1.本章学习总结

1.1学习内容总结

结构体的定义

  • 一般形式为:
struct 结构名{
类型名 结构成员名1;
类型名 结构成员名2;
…
类型名 结构成员名n;
};
struct是定义结构类型的关键字,在struct之后,自行命名一个结构名,它必须是一个合法的C标识符。
例如:
struct student {
    int num;
    char name[10];
    int computer, english, math;
    double average;
};

结构体的赋值

  • 对结构变量初始化
    struct student s1={101,"zhang",78,87,85};
  • 结构变量整体赋值
    如果两个结构变量具有相同的类型,则可以将一个结构变量的值赋给另一个结构变量。
    s2.num=s1.num; strcpy(s2.num,s1.num);

结构体数组排序做法

  • 例:学生成绩排序
    C博客作业06-结构体&文件_第1张图片
    C博客作业06-结构体&文件_第2张图片

结构体指针用法

  • 结构指针
定义:
struct student s1={101,"zhang",78,87,85},*p;
p=&s1;
  • 结构指针访问结构成员
    (1)用*p访问结构成员
    (*p).num=101;

    (2)用指向运算符->访问指针指向的结构成员
    p->num=101;
  • 结构指针作为函数参数
    C博客作业06-结构体&文件_第3张图片
    其中第一个形参就是结构指针,调用语句:pos= update_score(students, n,num,course,score);对应的实参是结构数组名students。

共用体、枚举类型做法

  • 共用体定义:
union 共用体名{
    成员列表
};
  • 结构体和共用体的区别:
    1.结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
    2.结构体占用的内存大于等于所有成员占用的内存的总和,共用体占用的内存等于最长的成员占用的内存。
    3.共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。
  • 枚举类型的定义:
enum
 
枚举名
{
    
枚举值表
};
例如:
enum typeName{
 valueName1,
 valueName2,
 valueName3,
 ...... 
};
  • 注意:
    1.枚举列表中的valueName1,valueName2,valueName3这些标识符的作用范围是全局的,不能再定义与它们名字相同的变量。
    2.valueName1,valueName2,valueName3等都是常量,不能对它们赋值,只能将它们的值赋给其他的变量。

1.2本章学习体会

  • 本章学习结构体及文件,内容多而且比较难理解,书上的知识点也没有完全理解,写的时候比较生疏,要不停的翻书。
  • 这次代码量很少,400行左右。

    2.综合作业--“我爱成语”

    2.1文件介绍

    头文件idiom.h

  • 用于定义结构体USER和IDI以及所有函数声明。
    C博客作业06-结构体&文件_第4张图片

    函数实现文件介绍

    文件1 idiom.cpp

  • 用于ListMenu()函数,LoginUser()函数和ArrayLiat()函数的实现
    C博客作业06-结构体&文件_第5张图片
    C博客作业06-结构体&文件_第6张图片
    C博客作业06-结构体&文件_第7张图片
    C博客作业06-结构体&文件_第8张图片
    C博客作业06-结构体&文件_第9张图片

文件2 idiomMain.cpp

  • 主要做打开文件和函数调用,数据输入输出处理。
    C博客作业06-结构体&文件_第10张图片

    文件3 Login.cpp

  • 用于GetChioce()函数和CheckUserValid()函数的实现
    C博客作业06-结构体&文件_第11张图片
    C博客作业06-结构体&文件_第12张图片
    C博客作业06-结构体&文件_第13张图片

    运行结果

    C博客作业06-结构体&文件_第14张图片
    C博客作业06-结构体&文件_第15张图片

你可能感兴趣的:(C博客作业06-结构体&文件)