项目:数据结构命令行菜单程序

作者 Marlous 日期 2019-03-04
项目:数据结构命令行菜单程序

GitHub 项目仓库链接:Data-Structures-For-C-Language

一 软件演示

软件演示

二 若干问题

  • 为了简化代码,突出数据结构知识重点,项目中的如顺序表的初始大小等都是用宏定义的,没有让用户从键盘输入。

  • 国内数据结构教材 《数据结构》、《数据结构算法解析》 中,代码里 & 符号的问题,教材中是 C++ 的用法,并非纯 C 语言,我自己的项目用的是纯 C 语言,所以代码在此问题上会有所不同。参考博文:C++ 中的&:“&引用” 和“&取地址符”的区别和作用C语言中取地址符&做函数形参?

  • 我自己的项目代码中与教材 《数据结构》、《数据结构算法解析》的代码在宏名、变量名等上面会不同。

  • 关于结构体指针:
    结构体变量的地址作为实参,传递到函数(形参为指针变量)。此时在函数内引用结构体变量的成员,直接写成 w->name 相当于 (*w).name(指针的解引用)。参考博文:结构体的初始化和引用及指向结构体变量的指针变量(C语言)

  • 访问结构体成员方法:点 . 是用于结构体变量访问成员,箭头 -> 是用于结构体指针访问成员。-> 从外部看是包含了一个解指针。

  • 菜单部分代码参考:C语言实现顺序表的创建与增删改查操作

  • C 语言中,传参数给函数有两种方式:按值调用(实参为变量名,形参为变量名。/ 是传一个副本给函数)、按地址调用(实参为地址,形参为指针变量。/ 函数通过指针解引用访问原本变量)。

三 版本控制最佳实践与问题

参考:
1、 A successful Git branching model
2、 Git飞行规则(Flight Rules)

版本控制最佳实践
版本控制最佳实践,自己的

四 开发环境

  • OS:Windows 10
  • IDE:Eclipse Cpp 2018-09
  • Compiler:GNU GCC v6.3.0

五 软件项目结构

  1. 软件项目结构:
    (截图为项目未完成的状态。)
    软件项目结构

  2. 项目(目录)结构解析:

    参考博文:《软件工程 C 实践二 课程总结笔记》

  • core 文件夹中,main.c 为整个项目的主程序。/ main.h 为主函数的函数声明(子模块会用到);config.h 为整个程序会用到的基本数据等。

  • 除 core 文件夹外,每个文件夹和其中与之同名的 c 文件,是一个模块(或子模块)。

  • 除 core 文件夹外,每个文件夹和其中与之同名的 c 文件中的同名函数作为这个模块的主函数(也是向外提供 API 的函数)。/ 补充: modules 文件夹中的每个 c 文件都为一个子模块,一个 .h 头文件统一向外提供 API 接口(其头文件还可能包含各个子模块可能会用到的宏定义等)。

  • 除 core 文件夹外,每个 .h 头文件即为接口文件,向外提供接口,供其它模块、函数调用。

  • 每个 c 文件,包含自己的头文件、自己程序所要用到的 API 的头文件。

  1. 文件结构:
  • 版权等信息
  • #ifndef、#define
  • 包含的头文件
  • 宏定义
  • 结构体定义
  • 变量定义
  • 函数声明

六 项目整理文章汇总