编辑
如MM所评论,原型中的参数const被忽略。原始答案的编辑源(如下所示)显示:
float correct(float const value);
float erroneous(float const value);
float changer(float value);
float correct(float value) {
  return -value;
}
float erroneous(float value) {
  value = -value;
  return value;
}
float changer(float value) {
    value = -value;
    return value;
}
没有错误信息。
无论如何,我会保留原件,希望对您有所帮助。
原版的
将const在参数使得这个参数只读在函数内部。
例如:
float correct(float const value) {
  return -value;
}
float erroneous(float const value) {
  value = -value;
  return value;
}
float changer(float value) {
  value = -value;
  return value;
}
没有错误消息,该源将无法编译。
该函数correct()将读取给定值,更改其符号,然后返回取反的值。
该函数erroneous()看起来实际上是一样的,只是对参数进行了赋值。但是由于参数是const不允许的。
接下来,该函数changer()将与以前一样工作,但不会出错。
让我们看一下呼叫站点:
float f = 3.14159;
float g = correct(f); // or erroneous(f) or changer(f)
变量f作为参数给出将被复制到参数value。即使changer()被调用,它也永远不会改变。
您可能希望将参数视为某种局部变量。实际上,它们在生成的机器代码中大多是这样处理的。
那么,为什么const有时看到?如果将指针定义为参数,则会看到它。
当您不想更改所指向的值时,需要添加const; 但是要放在正确的位置!
void effective(int const * pointer);
void futile(int * const pointer);
void possible_but_overly_restricted(int const * const pointer);
               
              
const这里是多余的,您的意念正在发生什么?