为什么要学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 并执行,结果如下图所示:
该命令要求系统执行程序sample.exe,并把输入来源由标准输入设备切换为文本文件sample.c,而程序sample.exe在执行过程中却无法感知这种切换,这种偷梁换柱式的操作叫做输入重定向。顺便指出,控制台应用程序是Windows系统的多种应用程序中的一种类型。
如果真正理解了这个程序,那么C语言学习就算入门了。该程序格式优美,算法精巧高效,真可谓