当前位置: 首页 > news >正文

什么是C语言?

什么是C语言?

文章目录

  • 什么是C语言?
    • 1.C语言的起源
    • 2.C语言的使用领域
    • 3. 为什么要学习C语言
    • 4.C语言的学习境界
    • 5.如何学习C语言
    • 6.学习C语言的推荐书籍


1.C语言的起源

C语言之父是丹尼斯·里奇丹尼斯·里奇(1941年9月9日-2011年10月12日),C语言之父,UNIX之父。曾担任朗讯科技公司贝尔实验室下属的计算机科学研究中心系统软件研究部的主任一职。1978年与布莱恩·科尔尼干(Brian W. Kernighan)一起出版了名著《C程序设计语言(The C Programming Language)》。此书已翻译成多种语言,被誉为c语 …

请添加图片描述


2.C语言的使用领域

请添加图片描述


3. 为什么要学习C语言

简单来说C生万物,作为最老的编程语言,现在的大多语言底层实现都是基于C/C++的,学明白了C语言可以很快的上手其他语言,从而提高自己的学习效率和遇到问题的解决能力。

我现在说这些大家还不能好好体会,只有等你写过超过10000行代码开始,你才会能够理解我现在说的,尤其是学习非C/C++语言的朋友。


4.C语言的学习境界

请添加图片描述

我对于C语言的学习分层了5层:

第一层:得其零碎—就是懂了基本的语法,能够勉强写出基本的逻辑,比如能够完成学校的课设学生管理系统/图书管理系统

第二层:得其皮毛—就是懂了点内存和指针管理,能够基本使用它们–大部分人大学毕业大概能到达这个层次

第三层:得其实质–就是能够灵活使用指针管理内存,进而与Linux结合使用C—这需要庞大的学习和剖析源码,不停的调试才能达到

第四层:得其精华—就是能出神入化的使用C语言,能够模拟实现和改造底层代码接口,不再受限于C语言提供的接口

第五层:已炼化其精华—就是能够理解和记忆关于C语言早期设计的BUG和解决方案—只有参考白皮书,著作,测试来理解

说来惭愧,我学习C语言已经3年了,才刚刚到达第二层皮毛,弯弯绕绕的自学C语言,反反复复的汲取书本和实际编写代码的经验,才敢于重新正视自己曾经学习的错误,重写关于C语言学习的博客,希望大家可以点赞关注收藏我,大家一起互相学习


5.如何学习C语言

以我个人在学习上犯的错来说:

首先,你要抛弃学校的C语言课本,就那本谭浩强的红色书—原因:他有营养,但是其中对于知识的阐述过于简单,知识还有很多错误,对于C语言的正确学习存在误导

其次,你需要去博客园、stack overflows、CSDN去找一些大佬的学习笔记,就找那种看的人最多的,博主等级最高的,这些学习笔记的博客是他对于知识的高度浓缩,可以让你快速的入门C语言,入门C语言只需要7天左右,如果你跟着学校的谭浩强课程来,你入门的时间至少需要2个月,我没有开玩笑,我就是这样懵懵懂懂过来的

然后,你需要找一些网课,就二倍速看,然后跟着他敲代码(一定要敲代码,不然学不会的),边看网课,边看书(书籍推荐我放在后面了),然后标记出哪些才是网课和书都提及的,那些就是这本书的精华,标记它方便后面的复习。

最后,等网课看完了,代码写完了,就翻开书,认认真真的去剖析书上的知识,然后在去敲代码实现这些知识,你就达到了"学成"的层次了!


6.学习C语言的推荐书籍

C Primer Plus—C语言的全解书籍,偏向于实际代码的解决问题—不适合入门使用,适合学过一段时间C语言用来查漏补缺

C和指针—重点讲解C语言的核心-指针和内存管理—书虽然很薄,但是都是知识的高度浓缩

C陷阱与缺陷—重点讲解C语言早期设计的漏洞和BUG—让你对于C语言底层有清晰了解

C专家编程—重点讲解C语言的语言特性和C语言的编程技巧

高质量程序设计指南C/C++语言—主要讲解C/C++代码风格和企业解决方案—适合学习至少超过1年的去看,可以解决你未来企业编程的绝大数问题

ps:入门直接看网课和博主博客学习笔记,然后再看书,不然你完全看不懂,计算机的书都有难度

我的学习经验:大家不要指望一年就能学懂C语言,C语言是一个庞大的体系,是需要我们长久的学习的,我学习C语言已经三年了,仍旧觉得自己处在似懂非懂的状态,问底层或者一个编程问题的原因,我是不能解释的,其实很多人都这样,也正是如此才诞生了程序员的35岁危机


相关文章:

  • 封装——C++
  • 【Java高级】框架底层基础:Java的反射机制剖析
  • verilog移位寄存器实现序列检测
  • 前端性能优化方法与实战02 性能瓶颈点:从 URL 输入到页面加载整过程分析
  • 34.0、C语言——C语言预处理(2) - 预编译(预处理)详解(2)
  • ES优化实战 - 小操作节省百分之三十以上的磁盘空间
  • [Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率
  • 我在windows环境下的YOLOV3环境搭建过程
  • bat goto 还是 call
  • JVM垃圾回收系列之垃圾收集算法
  • 计算机毕业设计选题推荐 40个高质量计算机毕设项目分享【源码+论文】(三)
  • BDD - SpecFlow BDD 测试实践 SpecFlow + MSTest
  • CRM项目记录(四)
  • React组件的生命周期函数
  • FFmpeg源码分析:avformat_open_input()打开媒体流
  • JS 中的深拷贝与浅拷贝
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 《Java编程思想》读书笔记-对象导论
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 3.7、@ResponseBody 和 @RestController
  • CentOS 7 修改主机名
  • echarts花样作死的坑
  • eclipse(luna)创建web工程
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • iOS | NSProxy
  • LeetCode18.四数之和 JavaScript
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 编写符合Python风格的对象
  • 两列自适应布局方案整理
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 我这样减少了26.5M Java内存!
  • 进程与线程(三)——进程/线程间通信
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #每天一道面试题# 什么是MySQL的回表查询
  • ()、[]、{}、(())、[[]]命令替换
  • (3)(3.5) 遥测无线电区域条例
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (力扣)1314.矩阵区域和
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转)socket Aio demo
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @staticmethod和@classmethod的作用与区别
  • [2016.7 day.5] T2
  • [C#]DataTable常用操作总结【转】
  • [Docker]六.Docker自动部署nodejs以及golang项目
  • [HDU3710]Battle over Cities
  • [java刷算法]牛客—剑指offer链表有环的入口、反转链表、合并排序链表
  • [json]定义、读写
  • [linux]资料收纳