C语言是一门编译型的计算机语言,C语言源代码都是文本文件。
文本文件本身无法执行,必须通过编译器编译和链接器的链接,生成二进制的可执行文件才能运行。
广闻博识——程序相关的文件
常规的文本文件text.txt的后缀:.txt;
C语言源代码文件test.c的后缀:.c——本质上还是一种文本文件,只是为了加以标识这是专属于C语言代码的文本文件而以.c为后缀。
而文本文件是不能直接执行的,需要经过编译器的编译和链接器的链接后生成二进制的可执行程序才能运行。
可执行文件test.exe的后缀:.exe
如下图所示:
由此可知,我们写出的C语言代码需要经过编译和链接两个过程,生成可执行程序之后才能运行,所以C语言的使用需要依赖于一些特定的工具——编译器和链接器,使得:
C语言代码(文本信息)——> 翻译成二进制指令
一、高级计算机语言的分类
高级计算机语言可以根据其“执行方式”分为:编译型语言、解释型语言、半编译半解释型语言。
按“编程思维”可以分为:面向过程(C语言……)、面向对象(C++、Java……)
1.1 编译型语言
编译型语言:编译器会将源代码编译成汇编语言,再由汇编语言的编译器编译成机器语言,进而生成可执行程序(机器语言的形式)来交给CPU执行。
特点:
• 编译型语言在执行之前,会通过编译器将源代码一次性翻译成目标机器代码(通常是可执行文件)。这种转换过程只发生一次,之后每次运行程序时,直接执行生成的机器代码。
• 编译型语言的执行效率通常较高,因为生成的机器代码是针对特定硬件优化的。
• 编译型语言的开发周期可能较长,因为每次修改代码后都需要重新编译。
代表语言:
• C语言:最早被广泛使用的编译型语言之一,以高效、灵活著称,常用于系统编程、嵌入式开发和高性能计算。
• C++语言:在C语言的基础上增加了面向对象的特性,广泛应用于游戏开发、高性能服务器、图形处理等领域。
• Go语言:由Google开发,以简洁、高效、并发支持良好而闻名,常用于网络编程、云计算和服务器端开发。
1.2 解释型语言
解释型语言:不直接编译成机器语言,而是将源代码转换成中间代码,然后发送给解释器,由解释器逐句翻译给CPU来执行。
特点:
• 解释型语言在运行时,由解释器逐行读取源代码并直接执行。每次运行程序时,都需要解释器的参与。
• 解释型语言的开发和调试较为方便,因为可以直接运行源代码,修改后无需重新编译。
• 解释型语言的执行效率通常低于编译型语言,因为每次运行都需要逐行解释。(每执行一次都要翻译一次)
开发效率较高;执行效率较低。
代表语言:
• Python语言:一种高级、动态类型的解释型语言,以简洁易读的语法和强大的库支持著称,广泛应用于数据分析、人工智能、Web开发等领域。
• JavaScript语言:主要用于Web前端开发,运行在浏览器中,也可以通过Node.js用于服务器端开发。它是一种动态的、基于事件驱动的语言。
1.3 半编译半解释型语言(混合型语言)
特点:
• 半编译半解释型语言结合了编译型和解释型语言的特点。通常会先将源代码编译成一种中间字节码,然后由虚拟机(JVM、CLR等)在运行时解释执行字节码。
• 这种方式既避免了直接编译成机器代码的复杂性,又提高了执行效率,同时保持了跨平台的特性。
• 这种语言的执行效率介于编译型和解释型语言之间。
代表语言:
• Java语言:先将源代码编译成字节码(.class文件),然后由Java虚拟机(JVM)在运行时解释执行。Java具有跨平台性、面向对象和强大的库支持,广泛应用于企业级应用、Android开发等领域。
• C#语言:由微软开发,用于.NET框架。它将源代码编译成中间语言(IL),然后由.NET运行时(CLR)执行。C#具有面向对象、类型安全等特点,常用于Windows应用开发、游戏开发(Unity引擎)等。
总结:
(1)编译型语言适合对性能要求较高的系统级开发;
(2)解释型语言适合快速开发和脚本编写,便于调试和修改
(3)半编译半解释型语言则在性能和开发便利性之间取得了平衡,适合大型跨平台应用开发。
二、各种编译器的比较 & 各种集成开发环境的比较
C语言是一门编译型的计算机语言,需要依赖编译器将计算机语言转换成机器能够执行的机器指令(二进制指令)。
那我们常见的C语言编译器都有哪些呢?
比如:
msvc(microsoft visual C++):微软开发的,VS系列集成开发环境使用的编译器。
clang(MacOS使用的编译器)
gcc
这3个就是比较常见的编译器——通过敲命令行的方式去编译代码。
当然也有⼀些集成开发环境。
集成开发环境(integrated development environment,IDE):用于提供程序开发环境的应用程序——顾名思义,它集成了代码编辑器(文本编辑器)、编译器、调试器和图形用户界面等工具,它是集成了代码编写功能、分析功能、编译功能、调试功能等功能的⼀体化的开发软件服务套。
集成开发环境一般都是将编辑、编译、链接、调试等功能集成在一起的一个开发环境
总而言之,集成开发环境就是把我们软件开发所需要的各种小工具集成到一起,让我们使用起来非常方便的一种应用程序。
常见的集成开发环境:
(1)VS2022:集成了MSVC,安装报包较大一些,安装简单,无需多余配置,使用起来非常方便。
(2)XCode:集成了clang,苹果电脑上的开发工具,苹果上用不了VS2022。
(3)CodeBlocks:集成了gcc,这个工具比较小众,需要配置环境,不太推荐。
(4)DevC++:集成了gcc,小巧,但是工具过于简单,对于代码风格的养成不好,一些竞赛使用。
(5)Clion:是默认使用CMake,可跨平台使用(windows、Mac),编译器是可以配置的(工具是收费,所以不推荐初学者使用)。
整体考虑,推荐使用VS2022学习,免费,使用方便,工作中常见。
VS2022的优点:(1)VS2022 是⼀个主流的集成开发环境,企业中使用较为普遍;(2)VS2022 包含了:编辑器+编译器+调试器,功能强大;(3)直接安装即可使用,基本不用额外配置环境,上手容易;(4)默认界面是中文的,初学者友好
缺点:功能丰富,安装包大,占用空间多。
此外,还介绍一下一个常见的工具——VSCode
VSCode不是一个集成开发环境,只是一个文本编辑器(类似于记事本),只是用来写代码的,只不过非常强大,相当于一个功能强大的记事本软件,可以安装各种插件,来搭建C/C++的开发环境,对于初学者而言自己搭建开发环境比较困难,不推荐初学者使用。
(类似于notepad++也是一个有时会用到的代码编辑的记事本)
三、使用VS2022进行C语言编程
概念1:项目 ——> 概念2:源文件 ——> 概念3:头文件
C语言把.c为后缀的文件称为源文件,.h为后缀的文件称为头文件。
步骤1:创建项目(代码在项目中进行管理)
步骤2:创建源文件——.c文件
广闻博识——.c与.cpp
问:.c和.cpp有什么区别?
答:.c文件是C语言的源代码文件(编译器会按照C语言的方式来编译代码),而.cpp(cplusplus)是C++的源代码文件(编译器会按照C++的方式来编译代码)
C和C++的关系如图:
应该说C++由C发展而来,支持绝大部分的C语言语法。
步骤3:写代码(要严格按照C语言语法来写代码)
如下就是一个很简单C语言代码:
步骤4:编译+链接+运行
一键完成:Ctrl+F5(开始执行(不调试)),或者Ctrl+Fn+F5。(只按F5是开始调试)
广闻博识——Fn
Fn是笔记本电脑上的辅助功能键,电脑上有F1,F2...F12总共12个功能键,原来是有自己特定的功能的,但是随着笔记本电脑更多地用来刷剧、写文本……等等,这些功能键也改为执行静音、音量-、音量+、亮度-、亮度+……等等一系列的功能(有的笔记本电脑的Fn+空格是调键盘亮度),那这些F1,F2……本来的功能就被覆盖了,于是笔记本电脑上就增加了一个Fn键,Fn+F1表示F1本来的功能、Fn+F2表示F2本来的功能……