访问器函数采用 const arg 但在 C 中返回非 const 指针
Posted
技术标签:
【中文标题】访问器函数采用 const arg 但在 C 中返回非 const 指针【英文标题】:Accessor function taking a const arg but returning non const pointer in C 【发布时间】:2011-07-28 12:45:31 【问题描述】:在这里寻求一些建议。
我有一个结构,其中包含指向另一个结构的指针,如下所示:
struct item
int type;
struct user *owner;
;
我也有访问器函数,像这样:
int item_get_type(const struct item * i);
struct user * item_get_owner(const struct item * i);
我的问题是关于这些函数中的第二个:这是否违反了关于使用 const 的任何规则或最佳实践?
我在这里使用 const 的原因是表示访问函数不会修改传递给它的结构,但允许调用者修改返回的结构。我最好在参数中删除 const 吗?
【问题讨论】:
正如下面@Graham 所说,您所做的一切都很好。如果您的意图是不允许调用者修改返回的结构,则返回类型将是const struct user*
。
【参考方案1】:
绝对没问题,它正确地表明了你的意图。
【讨论】:
【参考方案2】:此外,即使用户很容易修改结构,使用const
仍然很好,因为它有助于编译器优化函数中的代码。编译器会知道它永远不需要修改函数内部的结构。
【讨论】:
以上是关于访问器函数采用 const arg 但在 C 中返回非 const 指针的主要内容,如果未能解决你的问题,请参考以下文章