向函数原型中的char *参数添加/ * const * /而不是const限定符

时间:2019-04-25 11:48:02

标签: c function const const-correctness

我面对的一个函数需要一个指向char数组的指针,但它仅对char *所指向的内存执行读操作。

我可以在const参数之前直接将char *添加到原型中,但这会破坏其余的非const正确代码。我决定添加注释/*const*/来表示该功能仅执行读取操作。

但是,这使我的同事感到困惑,我想知道添加评论是否是一种常用方法,而批评是没有道理的。

示例:

int func(const char *readat);

int func(/*const*/ char *readat);

1 个答案:

答案 0 :(得分:3)

在函数参数中添加const不会中断任何调用代码。可以将非常量对象分配给const对象。

所以这是允许的:

char c;
char *p = &c;
const char *cp = p;

但这不是:

char c;
const char *cp = &c;
char *p = cp;
相关问题