术语“对象”由 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;
在上面的代码中,x
、y
和 z
是不同的对象? z
的成员是同一个对象? y
的元素是同一个对象?
最佳答案
In the code above,
x
,y
, andz
are different objects?
是的,它们占据完全独立的存储区域。
The members of
z
are the same object?
不,z.a
和 z.b
是两个不同的对象。可以说它们是 z
的子对象,因为每个对象的存储都包含在整体的存储中,但它不是完全相同的存储区域。该区域的大小也起到了一定作用。
The elements of
y
are the same object?
不,y
的每个元素都是一个单独的对象。但根据与上述相同的推理,我们可以将它们视为 y
的子对象。
关于c - C语言中如何识别一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46766507/