2012-05-14 58 views
3

Wheneven我经历了一些关于C的教程/笔记,我相当接触到术语“对象”。我一直在想,这个对象与过程语言有什么关系。有点深刻,我可以理解,占据一块内存的东西在c中被称为“对象”。C语言中的对象

我的问题是我的理解是否正确,或者是否有我缺少的东西。谢谢!

+1

您可能会发现这个问题很有趣:http://stackoverflow.com/questions/351733/can-you-write-object-oriented-code-in-c – MByD

+0

您正在阅读哪个教程或笔记?请提一些参考。这样的术语可能是特别的教程。 – Jay

+0

@Jay有几个教程,我已经提到了学习指针。每当阅读其他笔记或教程时,我有时会遇到这些我感到困惑的术语。 – Shash

回答

6

draft of the C99 Standard

3.14
对象数据存储在执行环境
区域,其内容可以代表 值

所以,你基本上没错。

注:

  • 一个对象可以有一个名称:int object = 42;
  • 的对象可以是一个较大的对象的一部分:struct tm x; /* (x) and (x.tm_year) are objects */
  • 一个对象可以被dinamycally分配:int *arr = malloc(42); if (arr) /* arr[4] is an object */;
2

至少在C标准中,“对象”大致是一块占用连续内存的数据。所以int,long,float,指针变量是所有对象,以及数组或结构或结构数组,或malloc的大块内存中的数据。

+1

'int','long','float'是所有类型。 “int”,“long”,“float”类型的对象都是对象。 “int”,“long”,“float”类型的值不是对象,而是值,例如文字“1”不是对象。 –

+0

那么,我故意不精确,以避免像你的自我参照解释。 – zvrba

2

有一段时间后this回到与着名的克里斯托雷克可能帮助你有关的这个comp.lang.c。

+0

为链接+1。 – Shash