周报总结

                                             在这里插入图片描述

                                                                    广西河池学院

                                                     广西高校重点实验室培训基地

                                                   系统控制与信息处理重点实验室

                                      本篇博客来自河池学院:OpenWRT无线路由组

                                                  写作时间:2020年8月21日20:16:03

8月15日--8月21日 周报

      结束了个人项目制作,我们回归到了各自的小组位置,接收到各个小组的任务,开始自我学习C++、stm32、数据结构等知识。自学几天后,学长教了我们数据结构、链表的知识,并且让我们更多的去接触msOS嵌入式微系统,并且布置了相关的任务:利用结构体链表的知识设计一个学生信息管理系统,以及使用msOS板去设计自动回火机。虽然现在还没完成自动回火机的任务,但在这一周里我也收获了很多。

       关于C++的小总结:

       刚开始接触C++时,发现C++于C语言有许多相同之处,以至于我一开始以为看错了视频,换了好几个老师的教学视频。但是在慢慢接触后,发现还是有很多的不同,我最直接最先接触的便是工程文件建立问题,因为的是使用VC++6.0,在建立工程时习惯性的建立了.c文件,在生成目标文件时却出现了错误(#error "eh.h is only for C++!")。查询后发现fstream标准库要求用到eh.h文件,而Exception Handling的实现需要c++支持,所以在使用VC++6.0时要注意建立工程文件时使用.cpp文件。

      C++是C的超集,也可以说C是C++的子集,因为C先出现。按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。

       1、C可以省略函数原型,而C++不能,一个不带参数的C函数原型必须把void写出来,C++可以使用空参数列表。

       2、stdio.h是c语言主要的一个头文件,是指 “standard input & output"(标准输入输出)。而到了c++里,常用iostream(输入流cin输出流cout),#include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。区分使用命名空间,在定义使用using namespace std命名空间名时,可直接"cout<<·····<<endl"输出;不定义时,"std::cout<<····<<endl"使用::作用于运算符命名空间。

      3、相对于C而言C++还增加了一些小知识点,比如使用bool变量型false代表真,true代表假;在强制类型转换时,C++只需要数据类型(表达式)来实现转换;当全局变量和局部变量同时使用时,C++中局部变量的值会覆盖全局变量的值,导致程序错误。

     4、使用引用为变量起另一个名字,定义引用时必须初始化,绑定到对象(变量)上。在使用指针引用时,constepr指针的初始值必须为NULL或者0,先赋值在间接访问,空指针不可进行访问,避免出现野指针(指针变量指向非法的内存空间)。

     5、在C中用到结构时,定义一个属于该结构的变量;在C++中,用到类时,定义一个对象。虽然叫法不同,定义时相似,但还是要注意区分,便于以后数据结构的学习。

      关于结构体、链表的小总结:

      刚开始上课时,觉得结构体很简单很好理解,使用也很方便。但在学习链表时却一头雾水,分不清使用的结构体到底是哪个,节点又是哪,分不清指针的指向。在学长的讲解和帮助下,可以将一条链表想象成环环相扣的结点,就如平常所见到的锁链一样。链表内包含很多节点(当然也可以包含零个节点)。其中每个节点的数据空间一般会包含一个数据结构(用于存放各种类型的数据)以及一个指针,该指针一般称为next,用来指向下一个节点的位置。

       使用链表时,要先初始化链表建立链表,建立时需要注意每次赋值后需要建立新的节点,保证没有多余的废节点。建立了头结点,对在第一元素结点前插入结点和删除第一结点起操作与其它结点的操作就统一了。由于单链表的结构中没有定义表长,所以不能实现知道要循环多少次,因此也就不方便使用for来控制循环,用while来控制。

      虽然使用链表制作学生管理系统的时间较长,但是我也学会了很多,吸取了很多教训。在设计学生管理系统时,学习借鉴了小甲鱼的教程,相对于尾插法,头插法建立链表虽然算法简单,但是生成的链表中节点的次序和输入顺序相反,不方便查看是否显示输出和输入是否一致,所以我使用了尾插法建立链表,;在进行学号排序时,使用了冒泡排序法,当前学号小于后一位时,结构体中每位成员进行冒泡排序,代码较长,思路清晰。但还是出现了一些错误,学生名字无法正常排序,只移动了首位名字,指针可能是只指向了字符数组的首位地址,没有一直指下去,所以我单独使用strcpy函数复制字符数组,再进行冒泡排序处理;在编写删除学生信息时,利用了搜寻的方式,先找到待删除的节点指针,然后再将空间释放;还有一个很容易犯的错,因为一直在修改自己的程序,在执行程序输入信息时总是不小心缺少一些,导致整个系统出现乱码,重新输入。

        综上所述就是我本周的学习总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿聍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值