Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的对象_C_Object - Fatal编程技术网

C语言中的对象

C语言中的对象,c,object,C,Object,当我阅读一些C语言的教程/注释时,我很容易就遇到了“对象”这个术语。我一直想知道对象与过程语言有什么关系。深入一点,我可以理解,在c语言中,占据一段内存的东西被称为“对象” 我的问题是,我的理解是正确的还是我遗漏了什么。谢谢 来自: 3.14 对象 执行环境中的数据存储区域,其内容可以表示 价值观 所以,你基本上是对的 注: 对象可以有一个名称:int object=42 对象可以是较大对象的一部分:struct tm x;/*(x) 和(x.tm_year)是对象*/ 对象可以按二进制分配:

当我阅读一些C语言的教程/注释时,我很容易就遇到了“对象”这个术语。我一直想知道对象与过程语言有什么关系。深入一点,我可以理解,在c语言中,占据一段内存的东西被称为“对象”

我的问题是,我的理解是正确的还是我遗漏了什么。谢谢

来自:

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

所以,你基本上是对的

注:

  • 对象可以有一个名称:
    int object=42
  • 对象可以是较大对象的一部分:
    struct tm x;/*(x) 和(x.tm_year)是对象*/
  • 对象可以按二进制分配:
    int*arr=malloc(42);如果(arr)/*arr[4]是对象*/

至少在C标准中,“对象”大致是占用连续内存的一段数据。所以int、long、float、pointer变量都是对象,也都是数组或结构或结构数组,或者是malloc内存块中的数据。

很久以前,著名的Chris Torek在comp.lang.c上发表了一篇文章,这篇文章可能会对你有所帮助。

你可能会发现这个问题很有趣:你读过哪些教程或笔记?请提一些参考资料。这样一个术语在那个教程中可能是特别的。@Jay有一些教程是我用来学习指针的。每当阅读其他笔记或教程时,我有时会遇到这些术语,对此我感到困惑。它与OO无关。调用malloc()时,会得到一个指向对象的指针。执行赋值时,左值(必须是对象)会被修改。在C语言中,“对象”只是一个事物的词,没有任何隐含的行为。它必须始终是物理对象:您不能修改表达式。经验法则是,对象是您可以获取其地址的对象。除了函数之外,函数不是对象,但可以获取它们的地址。
int
long
float
都是类型。
int
long
float
类型的对象都是对象。
int
long
float
类型的值不是对象,它们是值,例如literal
1
不是对象。在这里,我故意不精确,以避免像您这样的自指解释。