C语言C++编程学习:编译机制和语言标准

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

编程机制

编写程序时必须遵循确切步骤主要是取决于你的计算机环境。因为 C语言是可以移植的,所以它在许多环境中可用,其中包括 UNIX,Linux,Windows等等 。

不过,让我们首先来看一看许多环境所共有的一些方面。你完全不必知道运行一个 C 程序后面的事情,但了解一点是一个很好的背景知识。它还可以帮助你理解为什么编写一个 C 程序必须经过一些特定步骤。

用 C 语言编写一个程序时,你将编写的内容保存在一个被称为源代码文件的文本文件中。大多数 的系统,都需要该文件的名称以 .c 结尾。例如,helloworld.c 。名称中小点前的部分被称为基本名,小点后的部分被称为扩展名。因此,helloworld是一个基本名,c 是一个扩展名。组合在一起的 helloworld.c是文件名。

这样,在我们提到名称时内容就可以更具体,我们假定有一个名为 helloworld.c的源文件,其源代码如下面所示。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

------------------------------------------------------

#include

int main ()

{

printf("hello world! ");

return 0;

}

------------------------------------------------------

目标代码文件、可执行文件和库

C语言编程的基本策略是使用程序将源代码文件转换为可执行文件,此文件包含可以运行机器语言代码。它分两步完成这一工作:编译和链接。编译器将源代码转换为中间代码,链接器将此中间代码与其他代码相结合生成可执行文件。C 使用被划分为两部分的这一方法使程序便于模块化。你可分别编译各个模块,然后使用链接器将编译过的模块结合起来。这样,如果需要改变一个模块,则不必重新编译所有其他的模块。同时,链接器将你的程序与预编译的库代码结合起来。

中间文件的形式有多种选择。最一般的选择,同时也是我们这里讲述的实现方式所采取的选择,是将源代码转换为机器语言代码,将结果放置在一个目标代码文件中。虽然目标文件包含机器语言代码,但该文件还不能运行。目标文件包含源代码的转换结果,但它还不是一个完整的程序。

目标代码文件中所缺少的第一个元素是一种叫做启动代码(start-up code)的东西,此代码相当于你的程序和操作系统之间的接口。例如,你可以在DOS或Linux下运行一个 IBM PC兼容机,在两种情况中硬件是相同的,所以会使用同样的目标代码,但DOS与Linux要使用不同的启动代码,因为这两种系统处理程序的方式是不同的。

所缺少的第二个元素是库例程的代码。几乎所有C程序都利用标准C库中所包含的例程(称为函数)。例如,前面的 concrete.c 使用了函数 printf()。目标代码文件不包含这一函数的代码,它只包含声明使用 printf()函数的指令。实际代码存储在另一个称为“库”的文件中。库文件中包含许多函数的目标代码。

链接器的作用是将【目标代码】、【系统的标准启动代码】和【库代码】这3个元素结合在一起,并将它们存放在单个文件,即可执行文件中。对库代码来说,链接器只从库中提取你所使用的函数所需要的代码,如下图中的简单示例:

简而言之,目标文件和可执行文件都是由机器语言指令组成的。但目标文件只包含你所编写的代码转换成的机器语言,而可执行文件还包含你所使用的库例程以及启动代码的机器代码。

Windows系统的集成开发环境

因为 C 编译器不是标准 Windows 包的一部分,所以需要获得并安装一个 C 编译器。许多厂商都会提供基于 Windows的集成开发环境(IDE) 。所有编译器都具有用来装配C程序的快速,集成的开发环境。关键的一点是,它们都具有内置的编辑器,可用来编写C程序。这类开发环境一般都提供了让你可以命名和保存源代码文件的菜单,以及让你可以不离开IDE就能编译和运行程序的菜单。如果编译器发现任何错误,会返回到编辑器中,而且编辑器可以标出有问题的行,并将它们与相应的错误消息匹配起来,例如VC6.0、QT、Visual Studio(简称vs)。

Windows IDE最初可能让人有一点望而生畏,因为它们提供多种目标,也就是说,提供了多种可让程序在其中运行的环境。例如,它们可能提供16位Windows程序,32位Windows程序,动态链接库文件(DLL)等等让你选择。许多目标都需要引入Windows图形界面的支持。为了管理这些选项,通常需要创建一个项目,以便随后向其中添加将要使用的源代码文件名。一般来说,首先使用文件菜单来创建一个新的项目。重要的是选取正确的项目形式。本书中的例子是一般性的例子,设计目的是在一个简单的命令行环境中运行。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

因为 Widnows IDE一般可处理 C 和 C++,所以你应该指明你需要一个C程序。在某些产品,可以使用项目类型来指明希望使用 C。而在其他一些产品,如 Microsoft Visual C++中,可以使用.c文件扩展名来指明希望使用 C 而不是 C++。然而,大多数 C 程序也可以作为 C++程序运行。

可能大家在写完一个程序之后会遇到一个问题:显示程序执行的窗口在程序终止时突然消失,也就是程序运行后窗口一闪而过。如果遇到这种情况,那么可以使程序暂停,直到按下 Enter键。要做到这一点,请在程序的末尾,恰好在 return 语句之前,添加下面的一行:

getchar();

该行读取一次按键,因此程序将暂停直到按下 Enter 键时。有时,根据程序函数的需要,可能已经有一个等待按键的指令。在这种情况下,需要使用 getchar()两次:

getchar();

getchar();

例如,如果程序最后做的事情是请你输入你的体重,那么就应当键入你的体重并按 Enter 键以输入数据。程序将读取体重,第1个getchar()将读取 Enter键,第2个getchar()将导致程序暂停,直到再次按下 Enter键。如果现在你对此还不太理解,那么在学习更多关于 C 输入的知识后你就明白了。

虽然各种IDE都有许多共同的原则,但在细节方面会因产品而异,而在一个产品系列中,又会因版本而异。你必须要经过一些实践,才能知道编译器的正确工作方式。

语言标准

目前,有许多 C 实现方式可用。理想情况下,编写 C 程序时,假如该程序末使用机器特定的编程技能,则它在任何实现方式中的运行应该是相同的。要在实践中做到这一点,不同的实现方式需要遵守一个公认的标准。

首先说明一点,C语言并没有官方的标准。不过,Brian Kernighan 和 Dennis Ritchie 编写的 The C Programming Language 第1版(1978)成为大家接受的标准,通常称为 K&R C 或经典 C。特别是这本书附录中的“C Reference Manual”已成为 C 实现的指南。例如,编译器都会声明它可提供一个完整的 K&R 实现。然而,虽然该附录定义了 C 语言,但是却没有定义 C 库。因为 C 比大多数其他语言更加依赖库,所以还需要一个库标准。因为缺乏任何官方标准,所以提供 UNIX 实现的库成为一个事实上的标准。

第1个 ANSI/ISO C 标准

随着 C语言的发展和更加广泛地用于更多种类的系统上,使用 C 的群体意识到它需要一个更加全面,新颖和严格的标准。为了满足这一要求,美国国家标准代组织(ANSI)在1983年设立了一个委员会以发展一个新的标准,该标准于1989年正式采用。这个新标准(ANSI C)定义了语言和一个标准 C 库。国标标准化组织于1990年采用一个 C 标准 (ISO C )。ISO C 和 ANSI C 实质上是同一个标准。ANSI/ISO标准最终版本通常被称为 C89 (因为 ANSI于1989年批准了该标准) 或 C90(因为 ISO 于1990年批准了该标准)。然而,因为 ANSI版本是首先出现的,所以人们通常使用ANSI C这一术语。

C99标准

1994年,修订标准的工作开始了,这一努力的结果是产生了 C99标准。一个联合 ANSI/ISO委员会签署了 C90标准的最初原则,包括保持言语短小而简单。他们的意图不是为语言添加新的特性,而是为了满足新的目标。新目标之一是支持国际化编程,例如,提供了处理国际字符集的方法。第二个目标是“整理现有的惯例以解决明显的缺点”。因此,在遇到需要将 C 移植到 64 位处理器时,委员会根据在真实生活中处理问题的人的经验来添加标准。第三个目标是针对科学和工程项目的重要数字计算改进 C 的适应能力。

国际化,修正其不足和改进计算的实用性这三点是主要的面向改变的目标。形成在关于更改的计划在性质上更加保守,例如,让与 C90 和 C++ 的不兼容性达到最小,让语言在概念上保持简单。肩带来说就是希望 C++成为重要的和强有力的语言。

结果是 C99 的修改保持了 C 的本质特性,C 继续是一种简短,清楚,高效的语言。本书指出了 C99中的许多修改。因为目前大多数编译器没有完全实现所有 C99的修改,所以你可以会发现一些修改在你的系统上不可用。或者你可能会发现,只有修改编译器的设置以后,才能够看到一些 C99 的特性。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

总结

C 是一种强大,简洁的编程语言。之所以流行是因为它提供了有用的编程工具和对硬件良好的控制,还因为 C 程序在从一个系统向另一个系统移植方面比大多数程序更容易。C 是一种需要编译的语言。C 编译器和链接器是将 C 语言源代码转换成可执行代码的程序。

用 C 编程可能很费力,困难并让你感到灰心,但这一工作也可能让你着迷,兴奋和感到满意。

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

如果可以的话,请大家多多转发关注,谢谢支持!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容