算法c语言源码_「C与指针心得」C语言编程原理

感谢您的阅读与点赞!欢迎关注:「大猫玩程序」,查看C语言系列文章
908b778a89e4a6c828d59937acb4f732.png

C语言之父

C语言背景

20世纪70年代早期,贝尔实验室的Dennis Ritchie致力于开发UNIX系统。为了实现这个系统必须要有一种语言,能够生成简洁、快速的程序,并能有效地控制硬件。

在C语言诞生之前,程序员传统使用汇编语言来满足需求,汇编语言依赖于计算机的内部语言。但是汇编语言是低级语言,它用来直接操作硬件,直接访问CPU寄存器和内存。如果要将汇编语言移植到另一台机器上,就必须使用不同的汇编语言来重新编写程序,费时费力。

但是UNIX是为了不同硬件平台设计的,不针对特定硬件,在这种情况下,Ritchie希望有一种语言能将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合在一起,于是他在传统语言的基础上开发了C语言。

C语言编程原理

C语言的编程原理主要掌握下面几个概念:

1)数据+算法=程序

2)结构化编程,自顶向下(top-down)设计

3)程序单元设计

1.计算机语言两个概念

计算机语言要处理两个概念:数据算法

数据 + 算法 = 程序

数据:是程序使用和处理的信息;

算法:是程序使用的方法;

2.结构化编程

C语言采用了结构化编程,它采用子程序、程式码区块(英语:block structures)、for循环以及while循环等结构,来取代传统的 goto。希望借此来改善计算机程序的明晰性、品质以及开发时间,并且避免写出面条式代码。

结构化程序设计提出的原则可以归纳为32个字:自顶向下(top-down),逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。

底层的结构化程序设计

结构化的程序是以一些简单、有层次的程序流程架构所组成,可分为顺序(sequence)、选择(selection)及循环(repetition)。

● 顺序是指程序正常的执行方式,执行完一个指令后,执行后面的指令。

● 选择结构顾名思义,当程序到了一定的处理过程时,遇到了很多分支,无法按直线走下去,它需要根据某一特定选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行,选择结构有单选择、双选择和多选择三种形式。

● 不断的重复,被称作循环,所以这里的循环结构通常就是用来表示反复执行一个程序或某些操作的过程,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么时候可以执行循环?出现哪些操作需要循环执行?循环结构的基本形式有两种。当型循环和直到型循环。

● 重用测试过代码,如果重用别的程序中的部分越多,您自身的工作也越简单。在面向对象中,重用的过程更为容易一些,因为代码本身的可复用性更高。如果项目的任务不重,程序员之间的协作也更容易。

7c10602ec1834d53097d595bb825fe2d.png

3.程序单元

程序单元是指在程序中执行某一特定任务的具有一定独立性的代码模块

C语言鼓励程序员开发程序单元(函数)来表示各个任务模块。

C语言工作原理

一个程序,从C语言源码,到系统可执行的文件,一般经历以下四个过程

1、预处理阶断,这个阶断是文本处理阶断,由预处理器来完成,会将源码中的带"#"开头的预处理命令进行相应的处理,在Linux上C语言的预处理器程序是cp命令。

2、编译阶断,这个阶断是C语言编译阶断,在Linux上C语言的编译器是cc命令,它将C语言源码转换成汇编指令。

3、汇编阶断,这个阶断是汇编编译阶断,在Linux上C语言的汇编器是as命令,这个阶断会将汇编指令编译成二进制机器码。

4、链接阶断,这个阶断是会将汇编阶断生成的机器码目标文件,装载成一个系统可执行的文件,在Linux平台以ELF格式进行组装,在Windows平台上以PE格式进行组装。在Linux平台上的链接器命令为ld,在windows平台上的链接器命令为linker。

eee60b9785931d258311596de54c3e59.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值