作业解析-linux c指针案例

目录

1. 作业题目 ………………………………………………………………

2. 作业目的 ………………………………………………………………

3. 运行效果 ………………………………………………………………

4. 实现过程 ………………………………………………………………

5. 知识点巩固 …………………………………………………………..

6 知识拓展 ……………………………………………………………….

7 学习建议 ……………………………………………………………….

1.作业题目:

作业辅导解析

CSE2421_Lab3

7th Feb,2019

Lab 3 runs the basic simulation one time for multiple balls simultaneously in motion. Balls do not collide or interfere with each other. They bounce around as if alone until gravity takes them off the table. The simulation will read as many balls as it can and then run the sim until no more balls are left on the table.

2.作业目的:

学习:

  1. Structs

  2. Functions and short blocks of code

  3. Pointers

  4. Dynamic allocation and free

3.运行效果:

image

4.实现过程:

源码比较长就不贴了,大致实现过程是根据 lab3 给出的函数划分(基本可以当做是伪代码 了)写出函数头,确定要传递的参数,然后分别实现各个函数功能,最后组合在一起就可以 了。 //从文件中读取 ball 的信息,并存储在结构体中 BallSet* readAll(); //按指定格式打印 ball 的信息 void printAll(BallSet* allballs, double et); //更新全部球的信息(坐标,速度) void oneSimStep(BallSet* allballs, double et); //更新一个球的信息被 oneSimStep 调用 int updateOneBall(Ball* ball, double et); //球的物理状态计算 void physics(Ball* ball); //下面是三个约束的验证,碰撞以后球状态的修正 int upperWallConstraint(Ball* ball, double et); int leftWallConstraint(Ball* ball, double et); int rightWallConstraint(Ball* ball, double et); //球落下以后从球集合中删除 void adjustList(BallSet* allballs, int k); //释放内存空间 void deallocate(BallSet* allballs); 5.知识点巩固: 这个作业涉及的知识点比较多 1. 结构体的定义和使用,结构体成员如何访问,按指针访问(->操作符)和按引用(.操作符) 访问 2. 动态内存分配,realloc/free 函数的用法 3. 函数指针的用法,以及指针数组的用法 4. 函数的用法,传参(传递一个指针) 5. 宏的使用,#define 6. 头文件的使用 7. linux 管道、重定向的用法 8. 良好的代码风格,子函数功能拆解

6.知识拓展:

malloc 的用法 多级指针的用法,试着实现一个二维数组的动态申请和释放

7.学习建议:

基础知识按照 K&R 这本书学习,链接:https://book.douban.com/subject/1139336/ 学习 C11 标准,包含了很多新的语言特性,比 C89 标准写出来的代码要更短,可读性更好