sewell 发表于 2023-10-3 19:44:54

怎样快速入门C语言?

怎样快速入门C语言?

小新技术 发表于 2023-10-3 19:45:41

前言 C++已经问世 30 多年了。在此期间,很多新的语言来了又走,但是 C++经得起考验。本书 背后的一个大问题就是:为什么选择 C++?答案就分布于读者将要看到的本书的 10 章内容中。但作为一个“搅局者”,C++是一门灵活、强大的语言,并且拥有丰富、庞大的标准库提供支持。

    C++一直是一门强大的语言,可以让用户直接访问内存,同时提供大量的高级特性,比如 创建新类型和类的能力,以及重载运算符以满足用户需求。然而,更现代的 C++标准添加了不 少特性:通过模板进行泛型编程,通过函数对象和 lambda 表达式进行函数式编程。用户可以根 据需要充分地利用这些特性,也可以使用抽象接口指针或类 C 过程代码编写事件驱动代码。
现在常见的高级语言的底层几乎都是C语言实现的,所以,无论是学什么高级原理,要想掌握其内部原理,借助C语言就可以轻松了解。

那么初学者怎么学习C语言呢?

C语言适合当第一门编程语言学习

①、C语言语法相对简单,但又比较完整和严谨,包含该有的各种元素。学完C语言语法,要学习其它编程语言就很容易了。
②、C语言接近底层,可以了解内存和计算机的基本原理。
③、许多基础课程比如算法与数据结构教材都是以C语言为例子的,特别是中国版的书籍。如果你是大一刚开始学习编程,建议选择C语言做入门。

C语言学习的步骤

学习语法和基础算法 —> 了解C语言应用领域—> 确定是否从事C语言相关工作—>深入学习基础课程—> 学习领域相关的课程

C语言应用领域

是不是有些同学学完C语法后都不知道做什么项目。你需要掌握C语言应用领域,然后学习周边相关知识。相对于PHP、Java,C语言的开发效率较低,没有框架甚至没有库。数据结构要自己写,对操作系统底层要很熟悉,代码很容易出现内存相关的错误。C语言主要用于驱动开发、操作系统、内核开发,嵌入式(单片机)、交换机、路由器等网络设备的开发。如果你想要会用C语言开发项目,就需要掌握相关领域知识。

C语言方向选择

学完语法和了解C语言应用领域后,就要面临着选择。三个方向:
①、选择从事C语言相关的工作;
②、选择继续学习C++,C++主要应用领域游戏服务端开发、图形图像、C/S客户端界面开发、中间件;
③、选择其它方向的学习,比如物联网、Java等。

C语言学习方法

学习c语言也离不开记忆语法,但是死记的话,肯定不行。c语言,无非也就 是一种工具,用它来表达我们的思路,让计算机帮我们思考,写程序的过程就变成了告诉计算机该怎么做的过程。很多人遇到问题,自己都没有思路,更别提用c语言写程序了。很遇到问题的时候不要满脑子去想怎么用c语言处理这个问题,记住:程序 = 数据结构 + 算法,把思路转变到对数据的组织和对算法的思考上来。

pttnow 发表于 2023-10-3 19:46:06

互联网时代更新换代太快,大学的书本上的知识跟不上企业的技术需求变化,所以如何用更少的时间掌握最前端的技术,方法很重要。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。
如何从零开始学习c语言,主要学些什么呢?
考虑到这是一个c语言过来人感觉很基础,但是对于c语言初学者又觉得困难重重的问题,我想如果这篇文章要想写得不让你觉得专业名词扎堆,内容高深莫测,读完还是不知所云,那最好的办法也许是,我们通过沟通的方式把整个「C语言应该怎么学」的问题由小及大的展开,慢慢来谈。
在开始之前,我们先来做一个小测试。
一、小测试,你准备好学习C语言了吗?
▪ 你是否听说过二进制数,他们是如何进行运算的?(基本的数的进制知识)
▪ 你能说出一个最小的计算机系统由哪些部分构成吗?(基本的计算机结构知识)
▪ 计算机是如何存储图像的?(数字化原理)
上面这三个问题,能回答的同学举手。如果你举手了,那么我们进入下阶段的讨论,否则,我将告诉你,你现在最重要的事情,是赶紧找一本《计算机科学导论》把预备知识补充好。
因为C语言说到底是一门以内存为中心的编程语言,你能不能学懂它,其实很大程度上不是取决于你智商高低,而是你是否拥有扎实的计算机结构、存储、运算原理方面的知识!
在这里,我想强调,任何新知识的学习都是有一定的前提条件的。C语言学习的前提条件就是,对计算机系统要有一个整体的,科学的基础认识。脱离了这个基础认识,一切都很困难。
所以,有些同学学不会C语言,不是因为他们智商不行,而是因为他们没有准备好。
好了,接下来我们进入C语言的学习过程。
二、学C语言到底学些什么—— 「语法」和「函数库」
C语言学习的关键,是要先搞明白,学C语言到底是在学些什么?
我这么一问,有的同学就要翻开课本,指着目录说,我知道我知道,有变量,数据类型,循环语句,函数,还有指针等等!
很遗憾,如果你以为学习C语言就是学习这些东西,那你得赶紧纠正一下看法,否则接下来的学习会困难重重。因为我曾经就是这么掉到坑里的,这种狭隘的观点让我浪费了大量的时间去学习琐碎的细节,又让我迟迟不能接触到更重要的知识,结果是眼高手低——知道许多别人不知道的无用知识,但是又写不出什么真正像样的程序来。
所谓「语法」,就是入门教材里最着重讲解的内容。也就是那些所谓的变量、数据类型、分支判断、循环、函数、指针等等。
这些内容比较枯燥,但是好消息是这些内容并不难,都是一些格式化的东西。只要你多练习,就会自动的刻在你的脑子里,成为一种下意识的习惯。
但是 「语法」本身其实没什么用。因为它只是一种格式规范,你学得再好,也不能引导你写出厉害的程序。因为在软件设计中,实际上最核心的部分还是在于其 「函数库」部分。
什么是 「函数库」?
简单来说,函数库就是别人编写好的C函数,直接提供给你用,你只要调用里面的函数,就能实现一定的功能。例如 printf() 函数,你肯定知道,只要调用这个函数,你就能够在那个黑糊糊的窗口里显示一段文字。你并不明白 printf() 的内部工作原理,但是你知道你只要按照说明去调用,就能够实现对应的功能。
这就是函数库——别人写好的,打包送到你面前,你可以自由调用来做各种各样的事情的函数集合。
我来说几个来自函数库的函数,例如 CreateWindowEx() 函数可以用来创建一个窗体(这个函数由微软提供),例如 GaussianBlur() 函数可以用来对一个图像进行高斯模糊处理(这个函数由 OpenCV 提供),再比如 evhttp_new() 函数可以创建一个 HTTP 服务程序(这个函数由 libevent 提供)……
其他还有什么库函数?太多了。从控制网络通信,到截取视频画面并分析其中的人脸位置,到加解密本地文件,甚至包括微信收发消息,抓取淘宝商品信息……库函数的数量和有用程度远远超乎大家的想象。
诶?你从来没听说过还有这些东西?课本里也没提到?
那是因为你看的是入门教材,着重讲解语法,顺带提到了少量的 C 语言自带的库函数而已。事实上 C 语言包含的库函数本身就有不少,但是更多更强大的还是许多第三方库函数,例如我上面提到的这些。
重点是在于,我想告诉你,库函数才是你学习C语言并将其应用于实际的关键!
学会调用别人的库函数,甚至写出自己的库函数,都是极其重要的。因为一个函数,本质上就是一个功能单位。你拥有的基础设施越多,你的发挥空间越大。道理就是这么简单。这就是我需要向大家强调的第二个观点,要想写出实用的C程序,一大关键就是研究并学会使用各种库函数。
你看见隔壁张三写了个三维程序能让一个彩色的立方体在空中旋转?快找 OpenGL 库函数来用。什么?李四写了个网络软件能在局域网里聊天?快找 Socket 库来用。
看见了吗?库函数有多重要?
但是,函数库的学习并不是孤立的。许多库函数背后需要一定的领域知识支撑。同样如我第一个观点所述,需要预备知识。学懂一个函数库,代表的不仅仅是明白如何调用那么简单, 而更反映了我们对一个特定领域——网络、数字图像、密码学、操作系统等的认识。
三、基本的学习过程与一般规律
如我前面所述,C语言学习主要是以语法入门,然后到函数库。再具体一些来说,包括以下阶段:
1. 学习基础语法
2. 学习简单的少数几个C语言自带的函数
3. 学习一些程序设计的基础知识(数据结构,算法)
4. 学习更多更强大的C语言自带的函数
5. 学习一些特定应用领域的基本理论知识(操作系统,数据库,网络,图像……)
6. 应用上一阶段学习的到知识进一步学习其他人提供的函数库(网络处理、操作系统管理、图像、密码学等等)
对于本科阶段的同学来说,学习C语言着重学好1-4,有选择的学习一下5-6,做一些小作品出来,就已经非常不错了。这就是一般的学习规律。说得很简短,但是要做到真的很不容易。只要我们能坚持认真学习,做好练习与上机调试,即使是0基础也是可以学会C语言的。
0基础学习C语言

hhf203 发表于 2023-10-3 19:46:29

推荐学习翁恺老师的c语言课程。
【C语言程序设计 浙江大学:翁恺-哔哩哔哩】 https://b23.tv/nWSxheu
多敲代码,多背代码。

shzlq 发表于 2023-10-3 19:47:03

我认为的C语言入门就是懂得基本语法、熟悉基本数据类型、把函数和指针弄明白,稍微研究下C语言程序的运行过程。除了指针和函数可能对于小白来说理解起来比较困难外,其他没什么了。
建议呢就是对着 敲,之后再能弄明白每个语句是什么意思。

boat 发表于 2023-10-3 19:47:26

书山有路勤为径
对应到编程就是对应知识点的代码有没有亲自敲一遍,多敲多思考。
页: [1]
查看完整版本: 怎样快速入门C语言?