2011-07-28 21 views
1

在这里寻求一些建议。访问器函数采取const arg,但返回非常量指针C

我有一个包含一个指向其他结构的结构是这样的:

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吗?

+0

正如下面@Graham所说,你在做什么是绝对好的。如果你的意图是不允许调用者修改返回的结构,返回类型应该是'const struct user *'。 –

回答

6

这绝对没问题,它正确地表明你陈述的意图。

1

此外,即使用户很容易修改结构,使用const仍然很好,因为它可以帮助编译器优化函数中的代码。编译器会知道它永远不需要修改函数内部的结构。

相关问题