Unix是C的作者开发的。 Unix附属诞生物,当时使用的是cc编译器 然后有了linux就封装成了gcc编译器,但由于考虑到老家伙的使用习惯,还保留了cc C语言是结构化程序语言(一个程序能包含多个函数).C语言简单粗暴,主要由两大块组成,头文件和函数。 Nginx就是由C语言编写的比Apache性能优越。
关于VIM的使用: :set nu   (打开行号显示命令)
编辑c文件 直接编译命令$ cc hello.c 如果hello.c中需要引入其他文件中的函数

可以将目标文件先编译成编译成.o文件(二进制文件)$ gcc -c max.c -o max.o,然后编译$ gcc max.o hello.c (这样编译可以大大提高编译效率) 这样可以调用别人写的功能函数文件。但是当比人将自己写的c文件编译成了.o文件我们是看不到源码的,这时我们怎么知道使用方法呢? 解决方案:模仿.h文件的编写。在.h文件中描述用法,然后导入.h文件即可。
然后在主c文件中导入:
这时再$ gcc max.o min.o hello.c 即可完成编译。 这样做的优点: 提高编译效率,和代码完整性,以及工作上的解耦(分工合作)。
方便编译源代码:       上述我们使用cc/gcc命令编译源代码。但是问题来了,如果你的文件中导入了几千个别人写的.o文件那该怎么编译,一个个敲嘛?这显然是不可取的。针对这个问题,make工具就应运而生了。 先介绍一下make:      make是属于GUN项目的封装了gcc的批量自动编译工具,介绍完毕。 make的安装及使用: sudo apt-get update  更新源 sudo apt-get install make 很多人写的文件组合起来需要编译及使用,先潜规则约定一个Makefile文件用于说明多个与本项目有关的文件,可以在里面写注释,里面的编写规则主要是按照make的规则,让它识别即可。   Makefile文件编码规则: tab缩进需6个空格的规格。如果是四个空格的缩进则make编译时会出现异常,并且缩进必须为tab,不能使用6个Space代替。
Makefile一行一行的读,如果碰到没有的文件则向下递归查找并执行,最后回归执行主命令。 编写好Makefile文件后,之接在当前文件下 $ make 即可自动完成编译。 指定文件名称输出$ gcc max.o min.o hello.c -o hello.out
linux中的shell指令: && (类似于管道‘|’指令),传输连接执行, 并且&&前面执行返回值为0时后面的命令才执行,每一条命令都相当于执行一个可执行文件,而可执行文件又是c语言编译过来的。                               $ echo $? 查看上条指令是否执行成功,如果返回值是0则代表成功,否则为不成功。    将默认的return 0; 改为别的,也能执行但是返回值就变成修改的那个了,这样不符合系统有些命令的规则,就会出现上面的情况。
标准输入流,输出流,错误流的效果实现:
printf/scanf是由fprintf/fscanf后期封装形成的,也就是默认的执行输出/输入/错误流都被封装好了(默认的都是变准流:比如键盘屏幕等)。 运行效果如下:
如果输入小于0的参数就触发了错误流分支,返回自定义的错误信息。linux也就是由若干个小工具组成的。
关于linux的重定向

标准输出流重定向(>>追加模式, >表示覆盖重写 , 红框中的1可以省略,默认自带。 ):

标准输入流重定向(反向重定向,将即将输入的数据/参数提前写到一个文档中然后敲命令):

标准错误流: 先修改main.c文件:
然后编译$ cc main.c        运行$ ./main.out 如果将j输入值为0即出发标准错误流机制。
上图中画红线的命令意思: 执行a.out文件,将标准输出流重定向到t.txt文件,将标准错误流重定向到f.txt文件中(2代表标准错误流)。
当前没有建立input.txt文件,所以执行后会向错误流文件(f.txt)中打印错误信息。
关于管道( | )的原理以及应用: linux管道可以将linux shell中多个小工具集合起来一起使用。 有了管道linux才可以变得无比强大,没有管道多个程序很难结合在一起工作形成一个大项目。
为了理解管道的作用,写个小实例,内容如下图,然后分别编译:

将编译后的可执行文件(小工具)通过管道串行执行,input的输出流正好是avg的输入流,然后得出最终结果。
到此,入门C基本知识点将告一段落。
接下来将讲到C语言的核心知识(灵魂): 指针和内存

未完待续 ... ...











更多推荐

C语言从入门到放弃