为什么要学C语言?

  • 诞生于1972年,创下编程语言不老神话,在计算机业界的地位不可撼动,经典传奇继续……
  • 系统软件开发首选利器、不可或缺。各类计算机操作系统开发;汽车、飞机等微控制器系统开发;便携电子设备嵌入式处理器系统开发;数字音频、视频等数字信号处理器系统开发——都离不开它。因此只要精通C,高薪职位不愁。
  • 多种主流操作系统的内核或全部都是用C语言编写的,这些操作系统包括 original UNIX、Linux、Microsoft Windows、Apple macOS、HP-UX、SunOS、Apple iOS、Google Android等。
  • 吸收前人编程实践经验之精华,涵盖程序设计语言最基本的思想、概念和要素,直接派生出了C++和C#,深刻影响了Java和Python的发生与发展,从而成为承前启后的关键一环。所以只要学会了C,其它语言轻松上手。
  • 编程语言种类繁多、各有所长。在语言层次模型中,由于C靠近硬核,学习C语言有助于理解物理机器的工作原理,进而为学习计算机其它方面的知识奠定基础。
  • 在互联网、大数据、人工智能新时代,懂一点编程已属于大学生的知识标配。在大学课程体系中,C语言既是计算机相关专业的基础课,又是公共素养课。
  • 全国计算机等级考试、全国计算机技术与软件专业技术资格(水平)考试等IT证书考试均开考C语言科目。

结论:如果不甘当编程小白,如果想拿点亮身份的IT证书,如果要做程序员的实力派以养家糊口,如果抱有顶级系统开发的大咖梦,那么从C入手应当是最佳的选择,赶快行动吧!

来自网络的典型图片

图片背景代码是Brian W. Kernighan与C语言之父Dennis M. Ritchie合著经典教程《The C Programming Language》中的示例程序,它是original Unix系统的字计数程序wc的骨架版本,如下所示:

#include <stdio.h>

#define IN  1	/* inside a word */
#define OUT 0	/* outside a word */

/* count lines, words, and characters in input */
main()
{
	int c, nl, nw, nc, state;

	state = OUT;
	nl = nw = nc = 0;
	while ((c = getchar()) != EOF) {
		++nc;
		if (c == '\n')
			++nl;
		if (c == ' ' || c == '\n' || c == '\t')
			state = OUT;
		else if (state == OUT) {
			state = IN;
			++nw;
		}
	}
	printf("%d %d %d\n", nl, nw, nc);
}

这个程序从系统默认输入设备(称为标准输入设备,通常是键盘)读取按行划分的字符流,计数其行数、字数和字符个数,而后在系统默认输出设备(称为标准输出设备,通常是显示器)输出计数结果,以按行划分的字符流的形式来呈现。这种按行划分的字符流称为文本文件,而键盘和显示器相应称为设备文件。另外,这里的被简单定义为不含空格符、换行符或制表符的单字符或连续多字符片段,如 a,0,=,},nw,==,if,IN,%d,int,#define,<stdio.h>等都是字。若以本段代码文本为输入,则输出结果为一行字符 25 93 432,表示本段代码含有25行(包括空行)、93个字和432个字符(包括不可显示的字符)。

不妨在Windows系统采用某种C语言开发工具,创建上述代码的源程序文本文件sample.c,生成控制台应用程序sample.exe。然后,通过控制台命令提示符窗口输入命令 sample.exe < sample.c 并执行,结果如下图所示:

通过Windows的控制台命令提示符窗口执行程序,命令中的扩展名.exe可省略

该命令要求系统执行程序sample.exe,并把输入来源由标准输入设备切换为文本文件sample.c,而程序sample.exe在执行过程中却无法感知这种切换,这种偷梁换柱式的操作叫做输入重定向。顺便指出,控制台应用程序是Windows系统的多种应用程序中的一种类型。

如果真正理解了这个程序,那么C语言学习就算入门了。该程序格式优美,算法精巧高效,真可谓

代码如诗