Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

C简介

作者头像
mcxfate
发布于 2020-08-01 07:13:04
发布于 2020-08-01 07:13:04
6430
举报
文章被收录于专栏:it-沐晨it-沐晨

C 语言已成为最重要、最流行的编程语言之一。

C 是一种可移植性很高的语言。

C语言的特性:

1、设计特性

2、高效性

3、可移植性

4、强大而灵活

5、面向程序员

C 是编译型语言。

编译器是把源代码转换成可执行代码的程序。可执行代码是用计算机的机器语言表示的 代码。这种语言由数字码表示的指令组成。如前所述,不同的计算机使用不同的机器语言方案。C 编译器 负责把 C 代码翻译成特定的机器语言。

高级编程语言(如,C)以多种方式简化了编程工作。首先,不必用数字码表示指令;其次,使用的指 令更贴近你如何想这个问题,而不是类似计算机那样繁琐的步骤。使用高级编程语言,可以在更抽象的层 面表达你的想法,不用考虑 CPU 在完成任务时具体需要哪些步骤。例如,对于两数相加,可以这样写: total = mine + yours; 对我们而言,光看这行代码就知道要计算机做什么;而看用机器语言写成的等价指令(多条以数字码 形式表现的指令)则费劲得多。但是,对计算机而言却恰恰相反。在计算机看来,高级指令就是一堆无法 理解的无用数据。编译器在这里派上了用场。编译器是把高级语言程序翻译成计算机能理解的机器语言指 令集的程序。程序员进行高级思维活动,而编译器则负责处理冗长乏味的细节工作。

用 C 语言编写程序时,编写的内容被储存在文本文件中,该文件被称为源代码文件(source code file)。 大部分 C 系统,包括之前提到的,都要求文件名以.c 结尾(如,wordcount.c 和 budget.c)。在文件名 中,点号(.)前面的部分称为基本名(basename),点号后面的部分称为扩展名(extension)。因此,budget 是基本名,c 是扩展名。基本名与扩展名的组合(budget.c)就是文件名。文件名应该满足特定计算机操 作系统的特殊要求。例如,MS-DOS 是 IBM PC 及其兼容机的操作系统,比较老旧,它要求基本名不能超 过 8 个字符。因此,刚才提到的文件名 wordcount.c 就是无效的 DOS 文件名。有些 UNIX 系统限制整个 文件名(包括扩展名)不超过 14 个字符,而有些 UNIX 系统则允许使用更长的文件名,最多 255 个字符。 LinuxWindows 和 Macintosh OS 都允许使用长文件名。

?

目标代码文件、可执行文件和库 C 编程的基本策略是,用程序把源代码文件转换为可执行文件(其中包含可直接运行的机器语言代码)。 典型的 C 实现通过编译和链接两个步骤来完成这一过程。编译器把源代码转换成中间代码,链接器把中间 代码和其他代码合并,生成可执行文件。C 使用这种分而治之的方法方便对程序进行模块化,可以独立编 译单独的模块,稍后再用链接器合并已编译的模块。通过这种方式,如果只更改某个模块,不必因此重新 编译其他模块。另外,链接器还将你编写的程序和预编译的库代码合并。 中间文件有多种形式。我们在这里描述的是最普遍的一种形式,即把源代码转换为机器语言代码,并把结 果放在目标代码文件(或简称目标文件)中(这里假设源代码只有一个文件)。虽然目标文件中包含机器语言代 码,但是并不能直接运行该文件。因为目标文件中储存的是编译器翻译的源代码,这还不是一个完整的程序。 目标代码文件缺失启动代码(startup code)。启动代码充当着程序和操作系统之间的接口。例如,可以 在 MS Windows 或 Linux 系统下运行 IBM PC 兼容机。这两种情况所使用的硬件相同,所以目标代码相同, 但是 Windows 和 Linux 所需的启动代码不同,因为这些系统处理程序的方式不同。 目标代码还缺少库函数。几乎所有的 C 程序都要使用 C 标准库中的函数。例如,concrete.c 中就使 用了 printf()函数。目标代码文件并不包含该函数的代码,它只包含了使用 printf()函数的指令。 printf()函数真正的代码储存在另一个被称为库的文件中。库文件中有许多函数的目标代码。 链接器的作用是,把你编写的目标代码、系统的标准启动代码和库代码这 3 部分合并成一个文件,即 可执行文件。对于库代码,链接器只会把程序中要用到的库函数代码提取出来(见图 1.4)。 图 1.4 编译器和链接器 简而言之,目标文件和可执行文件都由机器语言指令组成的。然而,目标文件中只包含编译器为你编 写的代码翻译的机器语言代码,可执行文件中还包含你编写的程序中使用的库函数和启动代码的机器代码。 在有些系统中,必须分别运行编译程序和链接程序,而在另一些系统中,编译器会自动启动链接器, 用户只需给出编译命令即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C语言基础】:编译和链接(计算机中的翻译官)
我们在Visual Studio上写的C语言代码其实都是一些文本信息,计算机是不能够直接执行他们的,计算机只能够执行二进制指令。 要想计算机执行我们所写的C语言代码,就需要一个"翻译官",将我们写的C语言代码"翻译"成计算机能够执行的二进制指令。而承当"翻译官"这个角色的就是我们常说的编译器。
爱喝兽奶的熊孩子
2024/04/15
1520
【C语言基础】:编译和链接(计算机中的翻译官)
含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(下)
入口函数和运行库 入口函数 初学者可能一直以来都认为C程序的第一条指令就是从我们的main函数开始的,实际上并不是这样,在main开始前和结束后,系统其实帮我们做了很多准备工作和扫尾工作,下面这个例子可以证明: 我们有两个C代码: // entry.c #include <stdio.h> __attribute((constructor)) void before_main() { printf("%s\n",__FUNCTION__); } int main() {     printf("%s\n
刘盼
2022/08/26
1.5K0
含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(下)
CPrimer Plus第1章 初识C语言 学习笔记
编译器是将高级语言程序翻译成计算机所需的详细机器语言指令集的程序。主要负责处理冗长乏味的细节工作。
阳光罗诺
2021/08/29
5930
C Primer Plus 之初识C语言
CPU 负责处理程序,承担绝大部分的运算工作。RAM 随机访问内存(Random Access Memory)是存储程序和文件的工作区。永久内存存储设备 存储程序和文件,通常指机械键盘、固态硬盘。
用户7886150
2020/12/10
6510
我们编写的C代码是怎样跑起来的?
要想弄明白这个问题,首先我们得了解下C语言的编程机制,关于编程机制我在前面的文章中提到过,但没有过多的描述,今天我们就一起来看看这个问题。
C语言中文社区
2022/05/30
5830
我们编写的C代码是怎样跑起来的?
编写程序思路
第 1 步:定义程序的目标 在动手写程序之前,要在脑中有清晰的思路。想要程序去做什么首先自己要明确自己想做什么,思考 你的程序需要哪些信息,要进行哪些计算和控制,以及程序应该要报告什么信息。在这一步骤中,不涉及 具体的计算机语言,应该用一般术语来描述问题。
mcxfate
2020/08/02
9720
计算机底层知识之运行环境&可执行文件
今天,我们继续「计算机底层知识」的探索。我们来谈谈关于「运行环境&可执行文件」的相关知识点。
前端柒八九
2022/12/19
1.1K0
计算机底层知识之运行环境&可执行文件
as - 汇编语言编译器
as是一款常用的汇编语言编译器,在软件开发和系统编程等领域应用广泛,以下是关于它的详细介绍:
是山河呀
2025/02/02
880
C/C++面试常问题集(1)
优点:性能比面向对象高,易于调试和维护,效率高,可移植性强;因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
_咯噔_
2022/03/03
7290
鹅厂面试题|“你知道C++从源文件到可执行代码的过程吗?”
对于一个程序,从编辑文本开始到可执行,到底需要经过哪些过程,编译的原理又是什么?今天我们就来聊聊C++源文件从文本到可执行文件的历程。
灿视学长
2021/07/07
1K0
C/C++程序的编译过程
C/C++语言的编译链接过程要把我们编写的一个c/c++程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。 编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。 链接是把目标文件、操作系统的启动代码和用到的库文件进行组织,形成最终生成可执行代码的过程。 过程图解如下: 从图上可以看到,整个代码的编译过程分为编译和链接两个过程。 1、编译过程 编译过程又可以分成两个阶段:编译和汇编。 1.1 编译阶段 编译是读取源程序(字符流),进行词法和语法的分析,将高级语言指令转换
老九君
2022/03/04
8170
我与C语言二周目邂逅vlog——8.编译和链接
C 语言是一种经典的系统级编程语言,其开发过程包括多个阶段,其中最关键的就是编译和链接过程。编译和链接的理解对于掌握 C 语言程序的构建至关重要。在本篇文章中,我们将深入讲解 C 语言的编译和链接过程,详细介绍其各个阶段的工作原理、步骤以及潜在的问题。本文将涵盖从源代码到可执行文件的整个过程,详细解析编译器的各个阶段和链接器的工作方式,帮助读者更好地理解 C 语言的底层机制。
hope kc
2024/10/22
1590
第一节(C语言基础)
例如改为​​printf("Hello, World! \n")​​执行起来就会发生如下错误
冷影玺
2023/10/11
2140
第一节(C语言基础)
掌握C++编译过程:面试中常见问题解析
在编译器开始编译之前,会先进行预处理。预处理器会处理代码中的所有预处理指令,例如#include和#define等。它会将这些指令替换成对应的代码,生成一个新的文本文件。这个新的文本文件就是编译器的输入。在预处理的过程中,还会进行条件编译,即根据条件来选择是否编译某些代码块。预处理完成后,会生成一个没有宏定义和条件编译的中间文件。
小万哥
2023/03/25
4970
掌握C++编译过程:面试中常见问题解析
【AI系统】GCC 主要特征
GCC(GNU Compiler Collection,GNU 编译器集合)最初是作为 GNU 操作系统的编译器编写的,旨在为 GNU/Linux 系统开发一个高效的 C 编译器。其历史可以追溯到 1987 年,当时由理查德·斯托曼(Richard Stallman)创建,作为 GNU 课程的一部分。
用户11307734
2024/11/27
930
[C] 目标代码文件,可执行文件和库
C编程的基本策略就是使用程序将源代码文件转换为可执行文件,此文件包含可以运行的机器语言代码。
轻舞飞扬SR
2021/02/24
6340
转载:【AI系统】GCC 主要特征
GCC(GNU Compiler Collection,GNU 编译器集合)最初是作为 GNU 操作系统的编译器编写的,旨在为 GNU/Linux 系统开发一个高效的 C 编译器。其历史可以追溯到 1987 年,当时由理查德·斯托曼(Richard Stallman)创建,作为 GNU 课程的一部分。
聊月夜以予星辰
2024/12/11
870
转载:【AI系统】GCC 主要特征
【C语言】C语言 4 个编译过程详解
C语言的编译过程涉及几个关键步骤、概念和细节,每个步骤都有助于将人类可读的源代码转换为可执行的机器码。以下是详细的解释和示例:
LuckiBit
2024/12/07
1.2K0
【C语言】C语言 4 个编译过程详解
C语言程序编译成可执行文件的过程
现在我们将执行以下命令将源文件(hello.c)转化为可执行目标文件(hello):
魔王卷子
2019/05/28
2.9K0
低级工具——C语言/C++
虽然我的公众号以Python方向为主,但是Python运行速度太慢,因为做了太多的底层封装。提高速度可以使用多进程,但是多进程占用系统资源太多,为了减少占用的资源并提高性能,就该拿起低级工具,将“前盖”打开并对“引擎”进行调整。
不可言诉的深渊
2019/07/26
2.2K0
相关推荐
【C语言基础】:编译和链接(计算机中的翻译官)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档