一.知识总结
1.Linux基础知识学习
首先对Linux系统的基本结构和文件系统进行了学习,通过对文件系统的学习引深到硬盘的基本介绍。其次对文件系统的种类和格式进行了简单的介绍以及对常用的linux系统的目录结构进行了详细的介绍。
学习完linux系统的基本结构,我们进入了Linux的shell命令模块。众所周知,在linux中写C的文件以及同时写几个C文件的时候一个一个来写会显得异常的麻烦,而shell脚本命令则可以减少我们在面对这类情况的时间,同时在对一部分文件同行进行操作的时候也有更好的效率和效果。而在shell命令中各种符号所呈现的效果也很显著,管道符' |' 可以连接两个命令同时将前一个命令的输出作为下一个命令的输入,通配符'*'主要用于匹配文件名,grep命令用于查找输入的字符串,而转义符' \ '则可以将本来具有特殊意义的字符转义成正常字符,也可以将原本正常的字符转义成特殊的功能符号,除了上面这些符号还有目录分隔符'/',输出输入重定向符号'>' '>>' '<' 以及不常用的 ' `` ' 符号。
学习完shell的基本命令我们开始学习用户和进程相关的命令,了解了这些基本的命令,开始学习软件包管理器,可以通过dpkg命令实现本地软件包管理器下载东西,也可以使用apt命令进行联网软件包管理器下载所需要的软件。了解完上面的东西之后,开始进入网络的层次,熟悉网络的基本命令则是开始配置静态Ip和配置TFTP服务器实现一个用于上传和下载的服务器和NFS服务器,用于实现类似于文件共享的功能。
学习完以上的知识,正式开始接触shell脚本,而shelll脚本属于一种解释性语言。从开始了解shell脚本的格式到注意事项,从shell的变量到输入输出,从shell的结构分支到shell函数的学习。而其中,shell脚本的结构分支和C的结构分支类似,但是格式又有很大的区别,同时在写shell脚本的时候需要注意 空格 符号的位置,而写完之后也可能因为一个空格而报错影响整个脚本程序,需要格外的小心空格。
二.C高级知识的总结
相比较于Linux基础知识的学习,C高级的内容就把难度提上去了,尤其是指针这个东西,得去理解它的原理,再能在一堆指针的知识点中掌握这个东西,如果光靠死记硬背,那涉及复杂的指针知识点的时候那就会是及其的痛苦。
1.最开始接触的知识点就是GCC编译器,从GCC编译器的编译流程,编译器的组件,编译中常见的错误到程序的调试(GDB字符界面的调试工具)。
2.GCC编译器内容了解完了则是开始学习C高级的存储类型,而其中变量的作用域(表示变量可以被访问的代码区域)就包括auto的全局变量:,static的全局变量,static的局部变量。而他们之间也有这细微的区别auto的全局变量: 有全局作用域 有外部链接 存储域静态区;static的全局变量:有文件作用域 有内部链接 存储域静态区;static的局部变量:有局部作用域 无连接 存储域静态区
3.C语言的精华——指针
首先指针的本质就是内存操作,她可以表示内存的地址也可以表示存放内存地址的变量。指针中有着两个特殊的东西,野指针和空指针,前者表示定义时没有初始值亦或者表示指向的内存地址不可用;后者则表示指针变量的地址为0即NULL。
指针的关系运算!=的左右两边只能给指针类型,算数运算只能进行有条件的运算,而“ - ”运算只有大地址减去小地址,其表示两个地址之间的距离,而这两个运算的指针所指向的内存时连续可认为是数组。
二级指针:指一个指针指向了另外一个指针,而该指针中存放的是另外一个指针的地址
指针数组则是一个数组中存放的元素是指针类型,通常与二级指针搭配。
数组指针则是一个指针指向一个数组,该指针通常与二维数组搭配使用。
下面则是对于指针的理解总结,便于掌握指针(老师总结):
-
* & 互为逆运算
-
对指针 * 运算 就是指针指向的 对象本身
-
指针赋值 即 建立指向关系
-
指针算数运算
-
指针的关系运算
-
数组arr元素类型 *p = arr;
-
判断指针操作是否可行 是否有物理意义 是否满足运算规则
4.关键字:const关键字,void关键字以及tepedef关键字。
const关键字表示该变量是只读的不能重新赋值位于常量区
void关键字修饰函数返回值:表示函数没有返回值 void ,当函数形参没有时可以使用void 表示该函数不存在参数
typedef关键字则表示给类型去别名,使写负责的类型的时候更加简便。
5.函数五要素:功能明确,函数原型,参数作用传参方式,返回值注意事项, bug 部分
指针函数:表示一个函数的返回值是指针(不能是野指针)
函数指针:表示一个指针变量指向一个函数的地址入口
6.结构体:是一种构造数据类型可以用于存储多个不同类型的数据在内存中连续存放
其定义的步骤则是先定义结构体的类型,再通过该类型定义结构体的变量
而结构体中一个数据被称为结构体的一个成员
结构体指针:表示一个指针指向一个结构体的首地址
结构体成员的访问:1.通过结构体变量' . ' 成员名访问 2.结构体指针 -> 成员名 访问
结构体数组:则是一个数组其元素是结构体
结构体指针数组:表示一个数组的元素是结构体指针
7.共用体:表示多个不同类型的数据公用同一片内存空间,内存空间的大小以最多的那个类型为准。共用体现在用的比较少,只用了解就行了,了解它的基本使用和使用地方就可以了。
三.自我学习总结
通过这次学习,发现自己对于linux的基本知识和C高级的基本知识掌握的还是可以的,但是面对与指针的部分时,经常想着想着把自己就绕进去了,经常上一秒还一下子就通了,下一秒再去看的时候就感觉不太对,往往于此,自己就把自己绕进去了。这也能表明自己对与这部分知识点内容的学习和总结还不到位,放假还需要花费一定时间去深入的掌握,仔细观察其原理,通过自己的理解去掌握这部分知识点,以便于下次再看同样的问题不至于自己把自己绕进去。该情况也能时刻提醒自己,对于难掌握的知识点要花时间去掌握,去复习,去理解,把它彻底变成自己的东西,深深的刻在脑海里。
学习的时间才刚刚开始,还有很多的时间去巩固,去接触新的东西,也希望自己能养成复习和总结学习内容的习惯,给每一个阶段的自己进行总结和评价,看是否有哪里没做好的,哪里还有可以提高的地方,争取找到对自己最有用的方式学习,和学好每一部分知识点,课程结束可以去自己向往的地方自己学习,完成自己心中最明确的目标,加油!