C语言基本概念数据对象object

知名研究白癜风专家 http://baidianfeng.39.net/qwzj/

C语言从20世纪70年代初问世,迄今已经历了约半个世纪仍经久不衰,它是程序设计语言历史上寿命最长的语言之一。C语言标准最初由ANSI制定,年国际标准化组织ISO通过了ANSI89标准,将其作为ISO/IEC:国际标准,俗称C89或C90。

此后,C语言标准一直由ISO修订,依时间先后分别出现了C99,C11,C17等标准,如下图所示。

目前,国内绝大多数教材所讲内容仍然停留在C90标准。有一本非常出名的教材,在其前言中介绍其内容是按C99标准编写的,但让人感觉有一种挂羊头卖狗肉的嫌疑,因为,其内容仍然是C90。市面上能见到采用C99/C11的教材有但不多,参考文献中所列书目都很好,它们按C99或C11标准介绍C语言知识。这几本书都对object进行了介绍。object是C语言程序中一个重要的概念,但大多数教材忽视这个概念的存在。什么是object?在面向对象的计算机语言中,一般将其翻译为对象,但在C语言中,其含义与面向对象的计算机语言中的“对象”没有任何关系,因此,文献[1][4]将object翻译为数据对象,[2]将其翻译为“数据实体”或数据对象,[3]将其翻译为对象。本文采用大多数人的看法,将其翻译为“数据对象”。程序是用来处理数据的,在执行环境中,可以将数据写入存储器中的某个区域或者从该区域读出数据,每一个这样的存储区域称为一个数据对象(object)。C中的数据对象包括(但不限于)数组、数组元素、结构、结构成员、共用体、共用体成员、枚举、指针,以及那些用内存分配函数(比如malloc)创建的、具有指派存储期的数据实体。数据对象是指拥有一块存储区域、可以独立于程序代码存储的数据。在C程序中,数据对象可通过名字(比如变量名)和指针访问。

数据对象有自己的值,为了访问数据对象,需要声明一个指示该数据对象的标识符,如此,这个标识符就和数据对象建立了关联。例如:

inti=3;

该语句声明了标识符i及其指示的一个数据对象,或者说,标识符i指示存储器里的一个区域。为了方便起见,通常将i所指示的数据对象称为“数据对象i”。因为标识符i被声明为int类型,所以,数据对象i是一个int类型的数据对象,当写入数据对象i时,写入的内容应当是int类型的值,当读数据对象i时,读出的内容应当被解释为int类型的值。

在源文件中,用标识符代表暂时不存在的数据对象,并把它用在各种不同的”操作“中,一旦程序开始执行,这些数据对象才会被创建,并完成各种定义的操作。因此,数据对象只有在运行环境下才存在。

有了数据对象这一概念,很多问题就能描述清楚,下面文字摘录薛非老师的书。

“数据对象”这样的基本概念之所以重要的原因是,概念是逻辑思维的基本元素。基本概念不清楚,根本无法精确地思考和正确地表达。而“精准地思考和正确地表达”恰恰是程序员所必须具备的最基本的职业素质,你不可能指望“朦胧诗”式的代码能让计算机正确地执行你所要求的任务。

下面的说法就是典型的很不严谨的说法,或者说用严谨的态度来看就是错误的说法:

指针变量加1是将指针变量的原值和它指向的变量所占用的内存单元的字节数相加。

错误之处在于,设若有:

int*p=(int*)malloc(sizeof(int));

这时的p根本就不指向任何变量(变量都是有名字的),那么p+1怎么可能是将“指针变量的原值和它指向的变量所占用的内存单元的字节数相加”呢?

正确的说法应该是:“指向数据对象的指针变量加1是将该指针变量的原值和它指向的数据对象所占用的内存单元的字节数相加。”

从上面这个例子可以看出数据实体这个概念的重要性。

数据对象这个概念在C90标准中就有了,我们希望编写C语言教程的老师尽可能遵循标准来编写教材。

参考资料[1]StephenPrata.CPrimerPlus(第6版)中文版.人民邮电出版社,.[2]张基温.新概念C程序设计大学教程(C99版).清华大学出版社,.[3]李忠,王晓波.标准C语言指南(C11版).电子工业出版社,.[4]薛非.品悟C:抛弃C程序设计中的谬误与恶习.清华大学出版社,.预览时标签不可点收录于话题#个上一篇下一篇

转载请注明:http://www.jiaju1314.com/jbjj/jbjj/15943.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了