C语言学习之路

前两天TIOBE发布了11月份的编程语言排行榜,前四名依然不变,分别是:

java , c , c++ , python

其中值得关注的是c以5.10%的速度增长(涨幅最大),c语言是一门功能强大的语言,像我们常用的windows系统,linux内核,都是用c语言写的。c语言的强大随着我们的深入学习,一定会慢慢有所感受。

计算机行业发展非常快,大学里的教育基本都跟不上实际的社会需求,我们学校还在指定大家使用谭浩强的教材,使用VC6.0来教大家上机实验。

那你不妨看看本文,希望其中的一些建议能对你有所帮助。

C语言说到底是一门以内存为中心的编程语言,能不能学懂它,其实很大程度上不是取决于你智商的高低。而是你是否拥有扎实的计算机结构、存储、运算原理方面的知识!!

任何新知识的学习都是有一定的前提条件的,C语言学习的前提条件就是对计算机系统要有一个整体的

科学的基础认识,没有这个基础认识,一切都很困难。C语言学习的关键是要先搞明白:

学C语言到底是在学些什么?

我这么一问,有的人就要翻开课本,指着目录说:“我知道我知道,有变量,数据类型,循环语句,函数...还有指针等等!”

很遗憾,如果你以为学习C语言就是学习这些东西,那你得赶紧纠正一下看法,否则接下来的学习会困难重重。

因为我曾经就是这么掉到坑里的,这种狭隘的观点让我浪费了大量的时间去学习琐碎的细节,又让我迟迟不能接触到更重要的知识,结果是眼高手低—知道许多别人不知道的无用知识,但是又写不出什么真正像样的程序来。

然而所谓「语法」

就是入门教材里最着重讲解的内容

也就是那些所谓的

变量、数据类型、分支判断、循环、函数、指针等等

这些内容比较枯燥

但是好消息是这些内容并不难

嘻嘻嘻

都是一些格式化的东西

只要你多练习

就会自动的刻在你的脑子里

成为一种下意识的习惯

但是 「语法」本身其实没什么用

因为它只是一种格式规

你学得再好

也不能引导你写出厉害的程序

因为在软件设计中

实际上最核心的部分还是在于其「函数库」部分

什么是 「函数库」?

简单来说,函数库就是别人编写好的C函数,直接提供给你用,你只要调用里面的函数,就能实现一定的功能。

例如 printf() 函数,你肯定知道,只要调用这个函数,你就能够在那个黑糊糊的窗口里显示一段文字。你并不明白 printf() 的内部工作原理,但是你知道你只要按照说明去调用,就能够实现对应的功能,这就是函数库——别人写好的,打包送到你面前的,可以自由调用来做各种各样的事情的函数集合。

来说几个来自函数库的函数:

例如 CreateWindowEx() 函数可以用来创建一个窗体(这个函数由微软提供)、例如 GaussianBlur() 函数可以用来对一个图像进行高斯模糊处理(这个函数由 OpenCV 提供)、再比如 evhttp_new() 函数可以创建一个 HTTP 服务程序(这个函数由 libevent 提供)……

其他还有什么库函数?太多了

从控制网络通信,到截取视频画面并分析其中的人脸位置,到加解密本地文件,甚至包括微信收发消息,抓取淘宝商品信息……

库函数的数量和有用程度远远超乎大家的想象

诶?

你从来没听说过还有这些东西?

课本里也没提到?

那是因为你看的是入门教材,着重讲解语法,顺带提到了少量的 C 语言自带的库函数而已。事实上 ,C 语言包含的库函数本身就有不少,但是更多更强大的还是许多第三方库函数。

例如我上面提到的这些

重点是在于,我想告诉你:

库函数才是你学习C语言并将其应用于实际的关键!!!!!

学会调用别人的库函数,甚至写出自己的库函数,都是极其重要的,因为一个函数本质上就是一个功能单位。你拥有的基础设施越多,你的发挥空间越大,道理就是这么简单。这就是我需要向大家强调的第二个观点。

要想写出实用的C程序,一大关键就是研究并学会使用各种库函数:

也许你看见隔壁安诚诚写了个三维程序能让一个彩色的立方体在空中旋转,快找 OpenGL 库函数来用。

什么?晋香香写了个网络软件能在局域网里聊天,快找 Socket 库来用。

看见了吗?库函数有多重要?

但是,函数库的学习并不是孤立的,许多库函数背后需要一定的领域知识支撑。同样如我第一个观点所述,需要预备知识,学懂一个函数库,代表的不仅仅是明白如何调用那么简单。而更反映了我们对一个特定领域——网络、数字图像、密码学、操作系统等的认识。

扯了那么多

分享一些基本的学习过程与一般规律

如前面所述

C语言学习主要是以语法入门

然后到函数库

再具体一些来说

包括以下阶段:

学习基础语法

学习简单的少数几个C语言自带的函数

学习一些程序设计的基础知识(数据结构,算法)

学习更多更强大的C语言自带的函数

学习一些特定应用领域的基本理论知识(操作系统,数据库,网络,图像...)

应用上一阶段学习的到知识进一步学习其他人提供的函数库(网络处理、操作系统管理、图像、密码学等等...)

参考书籍

首先第一本

也是我认为最重要的书

《计算机科学导论》

这本书通俗易懂

知识面广

但又具有一定的深度

真是因为读了这本书

才让我建立了对计算机科学合理的基本认识

在不涉及太多的数学原理的情况下

这本书清晰的揭示了包括计算机的基本构成

CPU运算的原理

内存、硬盘、光盘是如何存储数据的

编程的基本原理(机器语言、汇编语言,结构化编程语言,面向对象编程语言)

以及网络、数据压缩等

至于具体语法的学习

我个人比较推荐

《C Primer Plus》

《C 和指针》

中文第六版大概有650页

除了由于这本书事无巨细的叙述风格以外

就是因为它实际上杂糅了一些语法之外的知识

比如《c primer plus》介绍了ADT、队列和二叉树

而这些东西会在以后一门叫数据结构的课上系统学习

如果学到这部分感到比较吃力可以暂时跳过

此外还涉及一些编译器、操作系统相关的知识

都会在以后的课程中慢慢学到

因此我想表达的是

不要被疑问绊住脚步

浪费太多时间在细枝末节的地方

不要觉得C语言是很复杂

它只是你进入新世界的第一步而已

而编程的世界远比你想象的更广阔、更有意思

《C primer plus》

很系统也很基础

坚持把书上的程序敲一遍

会有很大收获

再补充一本

如果对于那些已经学得差不多的同学

必须得看看下面这本就是吊炸天的

《C Standard Library》

好好看看这本书

它是真正的顶级教材,

因为—里面包含了准库实现的完整源码

以及作者在实现时的思路讲解

是一本值得收藏的超级力作

嘻嘻嘻

听完这些

小可爱们是不是对编程更感兴趣了呢

今天小编只是为大家介绍了C语言的学习方法

下期将会继续介绍Python编程语言

那么为什么是Python捏?

python是一种脚本语言

它的运行需要python解释器

属于解释型的语言

python本身就是由C语言开发出来的

而且是开源的

c语言面向过程

Python面向对象

C语言接近底层,运行速度更快

Python灵活、易扩展,功能强大

如果你不是专业学计算机的

也可以直接学python

大家有没有很期待哇?

那就等待下一期叭

文案:綦文举

排版;曹佳 贺雯

审核:葛婕慧

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181123B0SGU600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券