c - C语言中如何识别一个对象

标签 c

术语“对象”由 C11 标准第 3.15 节定义:

object

region of data storage in the execution environment, the contents of which can represent values

给出以下代码:

int x;

int y[10];

struct my_struct {
  int a;
  int b;
};
struct my_struct z;

在上面的代码中,xyz 是不同的对象? z 的成员是同一个对象? y 的元素是同一个对象?

最佳答案

In the code above, x, y, and z are different objects?

是的,它们占据完全独立的存储区域。

The members of z are the same object?

不,z.az.b 是两个不同的对象。可以说它们是 z 的子对象,因为每个对象的存储都包含在整体的存储中,但它不是完全相同的存储区域。该区域的大小也起到了一定作用。

The elements of y are the same object?

不,y 的每个元素都是一个单独的对象。但根据与上述相同的推理,我们可以将它们视为 y 的子对象。

关于c - C语言中如何识别一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46766507/

相关文章:

c - 删除链表中的元素,直到找到单词

c - C Int 和 Long 32 - 64 位中的值范围

c - 将逗号分隔的多个整数分配给 C 中的一个 int - 为什么这样做有效?做什么的?

c - 在父进程恢复执行之前等待所有子进程 UNIX

无法连接到本地主机

在 C 中复制字符数组?

c - 即使我的计算机是 Little Endian,以 Binary 打印数字总是以 Normal 格式(BIG Endian)打印?

java - 如何从java捕获错误并打印c程序触发器的流

c - 传递到管道 (2) 中的未初始化数组

c - 处理字符串转换溢出,特殊情况