一起啃书系列(C Primer Plus 第六版)--初识C语言<附大量编程题>

简介: 一起啃书系列(C Primer Plus 第六版)--初识C语言<附大量编程题>

前言


本来学JAVA学着学着听不懂什么叫空指针异常

上网上看感觉还是不够系统,趁着国庆重温C语言的经典C Primer Plus

这本书写的真的很细致,需要慢慢去消化吸收

纸上得来终觉浅,绝知此事要躬行

这句话看了好几遍了,我也写上去,很适合编程方向的学习

好了,开始啃书了

资源在这

image.png


一、C语言的起源


C 语言是一种高级语言,最初由 Dennis M. Ritchie [1] 为了开发一个操作系统而设计,最早在 1972 年在 DEC PDP-11 计算机上被首次实现。


二、C语言的应用


C 语言大量应用在需要直接硬件交互的场景。比如最近很多的物联网中的嵌入式设备,底层驱动,高性能计算,游戏后端服务,图形处理等等。


三、C语言的特点


  • 代码简洁不繁琐;
  • 具有良好的可移植性,代码与机器底层独立(相对于汇编语言而言);
  • 属于中层编程语言(底层的为汇编语言等,高层的为 Java 语言等);
  • 结构化语言;
  • 丰富的程序库可以使用;
  • 可以直接管理内存;
  • 运行速度快;
  • 提供了指针操作;
  • 可以使用递归;
  • 具有良好的扩展性。


四、编译的过程


image.png

着重介绍下编译,其他就是字面意思

编译是把自己编写的源代码转换成可执行的程序,可执行代码是用机器语言表示的代码。这种语言由数字码表示的指令组成。


五、编码机制


image.png


1.简述


C编程的基本策略是用程序把源码变成可执行文件来运行~


2.完成机制


C语言通过编译和链接两个步骤来完成这一过程,

编译器把源码转换为中间代码(目标代码文件),连接器把中间代码和库代码、启动代码(程序和OS之间的接口)进行合并,生成可执行文件

C语言通过这样分而治之的方法方便对程序进行模块化,可以独立编译单独的模块,稍后再用链接器合并已编译的模块。通过这种方式,如果只改变某个模块,不必全部重新编译一边,大大提高了效率!


六、在UNIX系统上使用C


image.png

一般用gcc编译器来编译

以上a.out就是可执行代码

七、一些OS


1.UNIX系统


UNIX操作系统,当时的电信业巨头AT&T(美国电报电话公司)的贝尔实验室开发的操作系统。 它是一个多用户、多任务操作系统,可以运行在大量不同种类的硬件平台上。


2.Linux


Linux是一个开源、流行、类似于UNIX的OS,Linux实际上只是一个内核,我们可以获得内核的源代码,编译并安装它,然后获得并安装许多其他自由发布的软件,从而完成一个完整的Linux系统的安装。

通常这样安装所得的系统称为Linux系统,系统中大多数的工具都来自于自由软件基金会的GNU项目。自己从源代码创建Linux系统比较麻烦,所以很多人制作了准备好Linux发行版(通常称为flavor),可以通过U盘和CD进行安装,这些发行版不仅包含Linux内核,还会装载一些编程工具和应用程序,一般都会装载一个X视窗系统。

著名的商业Linux发行版 Red Hat Enterprise Linux、Fedora、Novell SuSE Linux 著名的免费的Linux发行版 openSUSE变体、Ubuntu Linux、Slackware、Gentoo、Debian GNU/Linux。


3.GNU项目和自由软件基金会


自由软件基金会(Free Software Foundation) 由Richard Stallman创立,也是Emacs, GCC, GDB的开发者,GNU项目由他发起,这个项目的宗旨是试图创建一个与UNIX系统兼容,并不受UNIX名字和源代码私有权限制的操作系统和开发环境。

GNU项目软件GCC:GNU编译器集,它包括GNU C编译器。 G++:C++编译器,是GCC的一部分。 GDB:源代码级调试器。 GNU make:UNIX make兼容的语法分析程序生成器。 bash:命令解释器(shell) GNU Emacs:文本编辑器及环境。


4.Windows


就是我们常用的OS,在Windows开发需要借助IDE(集成开发环境)

常用的工具是Mirc Visual Stdio Express

个人比较喜欢用的是Vscode


八、复习题和小结


C语言是编译型语言。C编译器和链接器是把C语言源代码转化成可执行代码的程序

1.对编程而言,可移植性意味着什么?

完美的可移植程序是,其源代码无需修改就可以在不同计算机OS上成功编译

2.解释源代码文件、目标代码文件和可执行文件有什么区别?

源代码文件包含程序员使用任何编程语言编写的代码

目标代码文件是编译后的机器语言代码

可执行文件是经过链接器将目标文件代码和开始文件代码、库文件代码合并成完整的机器语言代码生成的一个可执行程序

3.编程的7个主要步骤是什么?

(1)定义程序目标;(2)设计程序;(3)编写程序;(4)编译程序;(5)运行程序;(6)测试和调试程序:(7)维护和修改程序。

4.编译器的任务是什么?

将源码转换为机器语言代码(也叫目标文件代码)

5.链接器的任务是什么?

链接器将目标文件代码和开始文件代码、库代码合并成完整的机器语言代码生成一个可执行程序


相关文章
|
3天前
|
C语言
【海贼王编程冒险 - C语言海上篇】库函数怎样模拟实现?
【海贼王编程冒险 - C语言海上篇】库函数怎样模拟实现?
6 1
|
3天前
|
C语言
【海贼王编程冒险 - C语言海上篇】怎样用C语言实现简单的扫雷游戏?
【海贼王编程冒险 - C语言海上篇】怎样用C语言实现简单的扫雷游戏?
5 1
|
3天前
|
C语言
【海贼王编程冒险 - C语言海上篇】C语言如何实现简单的三子棋游戏?
【海贼王编程冒险 - C语言海上篇】C语言如何实现简单的三子棋游戏?
7 1
|
5天前
|
存储 机器学习/深度学习 人工智能
|
5天前
|
机器学习/深度学习 移动开发 人工智能
C语言编程例题分享
C语言编程经典100例
|
3天前
|
编译器 C语言 C++
【海贼王编程冒险 - C语言海上篇】自定义类型:结构体,枚举,联合怎样定义?如何使用?
【海贼王编程冒险 - C语言海上篇】自定义类型:结构体,枚举,联合怎样定义?如何使用?
8 0
|
3天前
|
存储 C语言
【海贼王编程冒险 - C语言海上篇】C语言中的数据类型有哪些?又是如何存储?
【海贼王编程冒险 - C语言海上篇】C语言中的数据类型有哪些?又是如何存储?
7 0
|
4天前
|
C语言
|
4天前
|
编译器 程序员 Linux
|
4天前
|
人工智能 算法 Java