C语言初学

本文探讨了计算机为何被称为“二傻子”,因为它们基于二进制的运算原理。CPU通过识别0和1的机器语言进行计算。文章介绍了编译型语言(如C/C++)和解释型语言(如Python)的区别,包括执行速度、内存消耗、平台依赖性和安全性。编译型语言在执行速度和内存使用上占优,但不支持跨平台;解释型语言则具备更好的调试支持和平台独立性,但运行速度较慢。同时,解释型语言通过特定的解释器实现跨平台运行。
摘要由CSDN通过智能技术生成

第一天初识:

0.为什么我们说计算机其实是“二傻子”?

答:因为计算机的“大脑”是 CPU,CPU 负责计算机大部分日常的计算功能,而 CPU 原理上只认识 0 和 1。j简单而言,CPU 是由晶体管组合而成的,晶体管就是微型电子开关,它们是构建CPU的基石,你可以把一个晶体管当作一个电灯开关,它们有个操作位,分别代表两种状态:ON(开)和 OFF(关)。这一开一关就相当于晶体管的连通与断开,而这两种状态正好与二进制中的基础状态 0 和 1 相对应!)]aEPk(
但计算机是由电驱动,而 CPU 内部又有几亿到十几亿个晶体管,因此它的速度却是无与伦比的。

1. CPU 唯一认识的语言是什么语言?$FNL&HMJ
I答:机器语言,也叫机器码,由纯数字组成(因为 CPU 只认识二进制 0 和 1)。

        可分为以下结构:机器语言(0,1)---->汇编语言-----》高级语言:C/C++,python,java,}4&

WHs0;D
2. C 语言编写的源代码转换为汇编语言的过程叫什么?XmI"]v40Z
}$06#fV% Rt.nUS_9>58^{o
答:编译。Powered by 
;=!4x5^ORkj|~Y(SZ7a?lB+L12H{$
3. 编译型语言和解释型语言的本质区别是什么?2r?s!^}=X
;}&CX4bjMRnc*I17S?{F" Bk9deu63
对于 CPU 而言,编译型语言是将源代码先通过编译器编译为 CPU 认识的机器码(可执行文件),此后 CPU 随时都可以直接执行编译后的机器码;而解释型语言则不直接编译成机器码,而是将源码转换成中间代码,然后发送给解释器,由解释器逐句翻译给 CPU 来执行。

所以 python可以跨平台使用,边运行边解释;C/C++ 因已编译完成一个.exe的机器语言文件,脱离指定环境则运行报错;

编译型语言与解释型语言对比:

编译型语言:

  • 编译型语言最大的优势之一就是其执行速度。用C/C++编写的程序运行速度要比用Java编写的相同程序快30%-70%。

  • 编译型程序比解释型程序消耗的内存更少。

  • 不利的一面——编译器比解释器要难写得多。

  • 编译器在调试程序时提供不了多少帮助——有多少次在你的C语言代码中遇到一个“空指针异常”时,需要花费好几个小时来明确错误到底在代码中的什么位置。

  • 可执行的编译型代码要比相同的解释型代码大许多。例如,C/C++的.exe文件要比同样功能的Java的.class文件大很多。

  • 编译型程序是面向特定平台的因而是平台依赖的。

  • 编译型程序不支持代码中实现安全性——例如,一个编译型的程序可以访问内存的任何区域,并且可以对你的PC做它想做的任何事情(大部分病毒是使用编译型语言编写的)

  • 由于松散的安全性和平台依赖性,编译型语言不太适合开发因特网或者基于Web的应用。

解释型语言:

  • 解释型语言提供了极佳的调试支持。一名Java程序员只需要几分钟就可以定位并修复一个“空指针异常”,因为Java运行环境不仅指明了异常的性质,而且给出了异常发生位置具体的行号和函数调用顺序(著名的堆栈跟踪信息)。这样的便利是编译型语言所无法提供的。

  • 另一个优势是解释器比编译器容易实现

  • 解释型语言最大的优势之一是其平台独立性

  • 解释型语言也可以保证高度的安全性——这是互联网应用迫切需要的

  • 中间语言代码的大小比编译型可执行代码小很多

  • 平台独立性,以及严密的安全性是使解释型语言成为适合互联网和Web应用的理想语言的2个最重要的因素。

  • 解释型语言存在一些严重的缺点。解释型应用占用更多的内存和CPU资源。这是由于,为了运行解释型语言编写的程序,相关的解释器必须首先运行。解释器是复杂的,智能的,大量消耗资源的程序并且它们会占用很多CPU周期和内存。

  • 由于解释型应用的decode-fetch-execute(解码-抓取-执行)的周期,它们比编译型程序慢很多。

  • 解释器也会做很多代码优化,运行时安全性检查;这些额外的步骤占用了更多的资源并进一步降低了应用的运行速度。

4. 在 Linux 系统上用 C 语言编译的可执行程序,是否能在 Windows 系统上执行?tFP!-B$S
56[Agp-SvfC8>w4]J%MIHxed9Y1B@Z
答:不能。因为可执行文件在执行之前,操作系统要有一些准备工作,因为不同的操作系统,准备工作是不同的,所以可执行文件的格式不完全相同。比如 Windows 上大部分可执行文件为 PE 格式,而 Linux 上大部分可执行文件为 ELF 格式。格式不同导致了不同的可执行文件无法跨平台直接使用gq{F2dc
'v -3jp5}@Xs|zcy6QgwV!_N1(ZI
5. 解释型编程语言是如何实现跨平台的?`v&[*UE
N"K4f;,)QVGO@2SA9kRD'|IX<T3n
答:解释型编程语言为每个操作系统专门定制一个解释器作为中转,因此解释器只需提供一个统一的入口即可,如下图:3e{

ny

变扭p|

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值