代码之家  ›  专栏  ›  技术社区  ›  minc33

如何将结构指针传递给具有常量值的函数

  •  0
  • minc33  · 技术社区  · 8 年前

    我有:

    typedef struct LIST *List;
    

    struct LIST
    {
     Node *head;
     int numNodes;
    };
    

    如果我想将List的一个实例传递给一个函数,并使该值保持不变,那么一个合适的原型会是什么样子?

    到目前为止,我已经尝试过原型如下的函数:

    void func1(const List list);
    

    void func2(List const list);
    

    两者似乎都保持指针本身不变,而两者似乎都不保持指向的值不变。

    1 回复  |  直到 8 年前
        1
  •  2
  •   StoryTeller - Unslander Monica    8 年前

    两者似乎都保持指针本身不变,而两者似乎都不保持指向的值不变。

    这正是为什么人们不应该隐藏指针语义,如果他们打算继续并将类型视为指针。摆脱模糊的typedef:

    void func1(struct LIST const *p_list);
    

    const 相对的类型是一个红鲱鱼。“引导const是误导”的常见案例。