c语言从入门到放弃 书,C语言从入门到放弃

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

可以将目标文件先编译成编译成.o文件(二进制文件)$ gcc -c max.c -o max.o,然后编译$ gcc max.o hello.c (这样编译可以大大提高编译效率)这样可以调用别人写的功能函数文件。但是当比人将自己写的c文件编译成了.o文件我们是看不到源码的,这时我们怎么知道使用方法呢?解决方案:模仿.h文件的编写。在.h文件中描述用法,然后导入.h文件即可。

506a8ba7643bcf6232577a9419497194.png

然后在主c文件中导入:

6c33ec23a001d74775c0ddbbb2f2e597.png

这时再$ 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代替。

6ea45bdf85c527fb9ecb72f3b80f83d8.png

Makefile一行一行的读,如果碰到没有的文件则向下递归查找并执行,最后回归执行主命令。编写好Makefile文件后,之接在当前文件下 $ make 即可自动完成编译。指定文件名称输出$ gcc max.o min.o hello.c -o hello.outlinux中的shell指令: && (类似于管道‘|’指令),传输连接执行, 并且&&前面执行返回值为0时后面的命令才执行,每一条命令都相当于执行一个可执行文件,而可执行文件又是c语言编译过来的。$ echo $? 查看上条指令是否执行成功,如果返回值是0则代表成功,否则为不成功。7fae96b8a6cbe164a5c6b16e5ae64a1b.png将默认的return 0; 改为别的,也能执行但是返回值就变成修改的那个了,这样不符合系统有些命令的规则,就会出现上面的情况。标准输入流,输出流,错误流的效果实现:

f1d78a7471a5694fd9b187e4ad814d5d.png

printf/scanf是由fprintf/fscanf后期封装形成的,也就是默认的执行输出/输入/错误流都被封装好了(默认的都是变准流:比如键盘屏幕等)。运行效果如下:

beba96552417942ae6c654a82be351e2.png

如果输入小于0的参数就触发了错误流分支,返回自定义的错误信息。linux也就是由若干个小工具组成的。关于linux的重定向:

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

6957a2717ba68ebceb9fb5fd0d74209f.png

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

270ad31a4d46ce487b71c7c32181048f.png

标准错误流:先修改main.c文件:

dcf1dd68aeff3186a0999a1998e51637.png

然后编译$ cc main.c       运行$ ./main.out如果将j输入值为0即出发标准错误流机制。

9b0b20c909934e42111039592446c972.png

上图中画红线的命令意思: 执行a.out文件,将标准输出流重定向到t.txt文件,将标准错误流重定向到f.txt文件中(2代表标准错误流)。

165700.html

当前没有建立input.txt文件,所以执行后会向错误流文件(f.txt)中打印错误信息。

关于管道( | )的原理以及应用:linux管道可以将linux shell中多个小工具集合起来一起使用。有了管道linux才可以变得无比强大,没有管道多个程序很难结合在一起工作形成一个大项目。

为了理解管道的作用,写个小实例,内容如下图,然后分别编译:

2bb66f92ba9caf614239020ab4c979f8.png

将编译后的可执行文件(小工具)通过管道串行执行,input的输出流正好是avg的输入流,然后得出最终结果。

936ea157015298da723e3d1b7e9d3e0b.png

到此,入门C基本知识点将告一段落。

接下来将讲到C语言的核心知识(灵魂): 指针和内存

未完待续 ... ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值