【问题标题】:Dealing with Structs in C处理 C 中的结构
【发布时间】:2009-10-31 22:00:48
【问题描述】:

假设struct_name 是我定义的结构的名称,而array 是定义为char array[o] 的结构中的成员

以下行会产生什么? (*struct_name).array 地址位置?

【问题讨论】:

  • array[o] 是某种 hack...
  • 也许但那是一个非常有用的:)
  • 真的是array[o] 还是你的意思是array[0]? (即零,而不是标识符“字母哦”)。如果后一个“o”对于标识符来说是一个非常糟糕的名称。另外,与其描述代码“假设...”,为什么不直接发布代码,这样我们就不需要“假设”任何东西?

标签: c data-structures struct


【解决方案1】:

是的(假设 struct_name 是指向您的结构的指针,否则取消引用没有意义)

顺便说一句,为什么不做 struct_name->array ?

【讨论】:

    【解决方案2】:

    如果您已将 struct_name 定义为您的结构的实例,如下所示:

    struct your_struct struct_name;
    

    您想要struct_name.array,是的,它会为array 成员生成一个地址。如果您已将 struct_name 定义为您的结构的实例,如下所示:

    struct your_struct *struct_name;
    struct_name = malloc(sizeof(struct your_struct));
    

    你想要struct_name->array,它也返回array的地址。

    如果您将struct_name 定义为结构本身的名称,如下所示:

    typedef struct _struct_name {
        char array[5];
    } struct_name;
    

    那你就不知道自己想要什么了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多