【问题标题】:C programming ( structs) [duplicate]C编程(结构)[重复]
【发布时间】:2015-11-22 06:21:59
【问题描述】:

我有一个问题。假设我们有一个定义如下的结构:

 typedef struct test { 
   int x;
   int y;
 };

现在,如果我按如下方式创建此结构的实例;

  test object;

“&object == &object.x”也会这样吗??

【问题讨论】:

  • 您的意思可能是typedef struct { ... } test;。这与您提出的问题(此后已得到回答)无关,但发布实际代码通常是个好主意。

标签: c


【解决方案1】:

是的,结构的第一个数据成员的地址将等于结构本身的对象的地址。

来自 C 标准(6.7.2.1 结构和联合说明符)

15 在结构对象中,非位域成员和单元 位域所在的地址按顺序增加 在其中声明它们。 指向结构对象的指针, 适当转换,指向其初始成员(或者如果该成员是 一个位域,然后到它所在的单元),反之亦然。 结构对象内可能有未命名的填充,但在其 开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-28
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多