【问题标题】:What is an object in C?C语言中的对象是什么?
【发布时间】:2014-10-27 04:01:22
【问题描述】:

我不是在谈论 C++ 或 Objective C 中的对象。我试图理解“对象”在 this text 的上下文中的含义:

如果对象或函数的文件范围标识符的声明包含 storage-class-specifier static,则标识符具有内部链接。否则,标识符具有外部链接。有关 storage-class-specifier 非终结符的讨论,请参阅 Storage Classes

在一个翻译单元中,具有内部链接的标识符的每个实例表示相同的标识符或功能。内部链接标识符对于翻译单元是唯一的。

我已经在其他不同的 C 主题中看到过“对象”这个词。但是当我用 Google 搜索时,我只能得到 C++ 的引用。

我也读过herehere

【问题讨论】:

  • 请注意,C++标准中对象的定义也与OOP无关。 “对象是一个存储区域”(C++11 草案 n3290 §1.8)。
  • 最好在这里解释:stackoverflow.com/questions/1564359/…
  • @Rob:这与这个问题无关。

标签: c object


【解决方案1】:

object 一词由 C11 标准第 3.15 节定义:

对象

执行环境中的数据存储区域,其内容可以表示 价值观

您的 MSDN 链接上的文本是从 C11 标准的第 6.2.2/3 节复制粘贴的(不注明出处!)。

为了解释这个定义,数据存储区域是关键部分。所有变量都是对象,对象也可以通过malloc分配。

【讨论】:

  • 顺便说一句,您最好直接阅读标准或标准草案,而不是使用谷歌搜索术语。 See here 链接。
  • @user3646717 函数和结构定义不是对象;他们不使用任何数据存储。
  • @Rob 您的链接是在谈论“目标代码”或“目标文件”(“目标”一词的含义与此问题中的用法完全不同)
  • @user3646717 我们确实将变量称为变量。你刚才说的就像是在说“如果猫是动物,我们为什么不直接称它们为猫?”
  • @ruakh 他们都是对象。有时我们会说“子对象”。
猜你喜欢
  • 2012-08-16
  • 1970-01-01
  • 2010-09-06
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 2020-08-07
  • 2015-08-15
相关资源
最近更新 更多