Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在函数原型的char*param中添加/*const*/而不是const限定符_C_Function_Constants_Const Correctness - Fatal编程技术网

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

在函数原型的char*param中添加/*const*/而不是const限定符,c,function,constants,const-correctness,C,Function,Constants,Const Correctness,我面临一个函数,它接受指向char数组的指针,但它只对char*指向的mem执行读取操作 我可以将const直接添加到char*参数之前的原型中,但这会破坏非const正确代码的其余部分。我决定添加注释/*const*/,以指示函数只执行读取操作 然而,这让我的同事们感到困惑,我想知道添加评论是否是一种常见的做法,而批评是没有道理的 例如: int func(const char *readat); 对 int func(/*const*/ char *readat); 将const添加到函

我面临一个函数,它接受指向
char
数组的指针,但它只对
char*
指向的mem执行读取操作

我可以将
const
直接添加到
char*
参数之前的原型中,但这会破坏非const正确代码的其余部分。我决定添加注释
/*const*/
,以指示函数只执行读取操作

然而,这让我的同事们感到困惑,我想知道添加评论是否是一种常见的做法,而批评是没有道理的

例如:

int func(const char *readat);

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

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

所以这是允许的:

char c;
char *p = &c;
const char *cp = p;
但这不是:

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

修复非常量正确代码?如果
func(const char*readat)
而不是
func(char*readat)
破坏现有代码,则不应存在
const
。它以何种方式破坏其余的“非常量正确代码”?如果您想在char数组上执行只读操作,那么使用const的方法是非常好的。如果在你的函数中的任何其他地方,这个字符数组都被操作了,你可以考虑把这个代码放在其他地方,因为从设计的角度来看,这是没有意义的。非const代码在哪里?把一个非const参数传递给一个使用<代码> const 参数的东西不是错误的,即
func
的调用者不会因为添加
const
而中断。如果
func
本身调用了采用非常量参数的某个函数,并且您知道另一个函数实际上没有修改其参数,则可以向其添加
const
(如果可以),或者将参数强制转换为
func
内部的
const
(如果无法修改)。(如果它确实修改了参数,那么
const
显然是不正确的,您不应该添加它或任何其他建议的注释。)