访问器函数采用const arg但在C中返回非常量指针

har*_*ald 1 c const-correctness

在这里寻求一些建议.

我有一个结构,其中包含指向另一个结构的指针,如下所示:

struct item
{
    int type;
    struct user *owner;
};
Run Code Online (Sandbox Code Playgroud)

我也有访问器功能,如下所示:

int item_get_type(const struct item * i);
struct user * item_get_owner(const struct item * i);
Run Code Online (Sandbox Code Playgroud)

我的问题是关于这些功能中的第二个:这是否违反了有关const使用的任何规则或最佳实践?

我在这里使用const的原因是表示访问器函数不会修改传递给它的结构,但允许调用者修改返回的结构.我最好在论证中删除const吗?

Gra*_*and 6

这绝对没问题,它正确地表明了你的意图.