如何学习

C语言的重要性
C语言是所有高级语言的前辈,C++,C#,Java ,都是由C语言演变过来的,包括现在很火的python,第一个Python编译器诞生,它是用C语言实现的。

所有大学理科专业的必修课程都是C语言,就算你将来不从事开发, 期末考试总不能挂科吧,除了C语言,小林不知道还有哪一门课这么普及。

我们常用的操作系统windows、linux、unix是C语言开发的,如果你想当黑客必须学C语言,你去黑别人电脑的是不是绕不操作系统。

如果你想入职阿里、腾讯这样的大厂,必须学C语言,为什么呢?
因为大厂都要考算法,比如我要你实现二叉树,你总不能用Java来实现吧,况且进大厂你的基础要扎实吧,操作系统,数据结构是不是要学一下,哎,又绕回C语言了。

C语言应用领域

  • 操作系统:windows、linux、unix
  • 数据库:Oracle和sql server
  • 一些驱动程序
  • wps、photoshop
  • 嵌入式开发

C语言特点

  • C语言简洁,灵活,有37个关键字,9种控制语句。
  • C语言数据类型极其丰富。
  • C语言程序执行效率很高,可以直接操作内存。

C语言学习目标

  • 掌握C语言的语法规则,数组、循环、函数、指针等。
  • 要学会一些算法,比如冒泡排序、快速排序、递归等。
  • 在学习的过程中理解什么是面向过程,为将来学习C++、Java等面向对象语言做准备。

如何学习

C语言开发工具介绍
VC6.0:微软的一款C语言/C++编译器,可以将高级语言翻译为机器语言的程序,Visual C++6.0是一个功能强大的可视化软件开发工具,1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具,1998年推出VC6.0,截至到今天已经23年没有更新迭代了,因此小林不建议使用这个开发工具,太老了,跟不上时代的潮流。

Dev-C++:Windows 环境下的一个轻量级 C语言/C++ 集成开发环境(IDE),遵守GPL许可协议分发源代码。它集合了功能强大的源码编辑器、MingW64/TDM-GCC 编译器、GDB 调试器和 AStyle 格式整理器等众多自由软件,小林个人是十分推荐初学者使用这个开发工具的,操作十分便捷。

VS2019:VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,Visual Studio是最流行的Windows平台应用程序的集成开发环境,1995年,微软发布了 Visual Studio 初版,最新版本为 Visual Studio 2019 版本,这个开发工具我不建议初学者使用,因为操作较为复杂,没有编程基础的,看着这个开发功能会很懵逼。

上述三个开发工具,下载地址「推荐收藏 | 开发工具」,关于如何使用请看文末,小林录制了视频教程,专门讲解这三个开发工具的使用。

如何学习C语言

  • 掌握基础知识,为将来进一步学习打下良好的基础。
  • 上机实践,通过大量的例题学习怎么设计算法,培养解题思路。
  • 养成良好的编码习惯,注释一定要写,要不然保你一周后自己写的代码都不认识了。

C语言的结构
一个程序由一个或者多个源程序文件组成,一个规模较小的程序,往往只包括一个源程序文件,一个源程序文件包括3部分:

  • 预处理指令,由预处理得到的结果与程序其他部分一起,组成一个完整的、可以用来编译的最后的源程序,然后由编译程序对该源程序正式进行编译,才得到目标程序。
  • 全局声明,即在函数之外进行的数据声明。
  • 函数定义,自己定义的函数。

函数是C程序的主要部分

  • 程序的几乎全部工作都是由各个函数分别完成的,函数是C程序的基本单位,在设计良好的程序中,每个函数都用来实现一个或几个特点的功能。

一个函数包括两部分

  • 函数首部,即函数的第一行,包括函数名、函数类型、函数属性、函数参数、参数类型。
  • 函数体,包括声明部分和执行部分

函数总是从main函数开始的

  • 不管main函数在整个程序中的位置如何,main函数可以放在程序的开头,也可以放在程序的结尾,或在一些函数之前,另一些函数之后。

程序中对计算机的操作是由函数中的C语句完成的

  • 如赋值,输入输出数据的操作都是由相应的C语句实现。

在每个数据声明 和语句的最后必须有一个分号

  • 分号是C语句的必要组成部分。

C语言本身不提供输入输出语句

  • 输入和输出的操作是由库函数scanf和printf函数来完成。

程序应当包含注释

  • 一个好的、有使用价值的源程序都应当加上必要的注释,增加程序的可读性。

为什么写这三行代码

C语言实现Hello xiaolin

  1. #include<stdio.h>//头文件
  2. int main()//主函数 程序的入口
  3. {
  4. printf("Hello xiaolin!\n");// \n是换行的意思
  5. return 0;
  6. }

编译运行结果:
image.png

为什么写#include
#include是在程序编译之前要处理的内容,是编译预处理命令,一般以“#”开头,并且不用分号结尾。
在上述程序里编译预处理命令称为文件包含命令,作用是在编译之前把程序需要使用的关于系统定义的函数printf()的一些信息文件stdio.h包含进来。

stdio.h是C语言编译系统提供的一个文件名,stdio是“standard input & output”的缩写,即有关标准输入输出的信息。

在上一节小林讲过C语言本身不提供输入输出函数,如果想用printf输出函数怎么办呢?

include的作用就是用来提供printf和scanf这些信息的。

如果不加#include,编译程序会报错,如下:
小林说C语言 - 图2
如果也去掉printf则会编译通过:
小林说C语言 - 图3
不加头文件是没有意义的,小林是为了给大家做演示才不加的,别学我。
为什么写main
main函数是程序的入口,举个例子,main函数就相当于你家房子的大门,你要回家是不是要通过大门,同理到C语言就容易理解了。

C语言程序总是从main函数开始执行的,如果main函数中有其他函数,则完成对其他函数的调用后再返回到主函数,最后由main函数结束整个程序。

return语句的作用
一句话总结:将结果返回到函数调用处。
return 0的意思是程序运行到这里,就不往后运行了,程序结束了,这行代码可以省略。
运行C语言程序步骤
上机输入和编译源代码

  • 通过键盘向计算机输入程序,如发现有错误,要及时改正。最后将此源程序以文件形式存放在自己指定的文件夹内,文件用.c作为后缀。

对源程序进行编译

  • 先用C编译系统提供的“预处理器”对程序 中的预处理指令进行编译预处理。在用编译系统对源程序进行编译时,自动包括了预编译和正式编译两个阶段,一气呵成。

进行连接处理

  • 经过编译所得到的二进制目标文件还不能供计算机直接使用,必须把所有的编译后得到的目标模块连接装配起来,再与库函数形成一个整体,生成可执行程序。

运行可执行程序

  • 一个程序从编写到运行成功,并不是一次成功的,往往要经过多次反复。而且即使是编写好的程序也并不一定能保证正确无误。