我最近在阅读关于使用const
关键字作为函数参数在C中的使用方法以及在When and for what purposes should the const
keyword be used in C for variables中提到的使用方法,并且被接受为正确答案。在这篇文章中,有一点提到为什么在通过值传递的参数的头文件的函数声明中const是不必要的?
从来没有在一个函数原型使用
const
由 值传递的参数。它没有意义,因此只是'噪音'。
我用这样的方式,它为我工作,但我不知道为什么这是一个噪音为按值传递的参数,但不是通过引用(更贴切的指针值传递的参数噪声C,因为在C中没有pass by value
和pass by reference
的概念)。所以,当我通过一个指针作为函数参数并使用const
关键字时,我必须为头文件中的声明和C文件中的定义执行此操作,但我不需要在声明(头文件)中使用const
关键字作为非指针参数,只能在定义函数时使用它C文件。
任何解释?
由于您正在传递值,因此更改该值没有实际影响。将它称为const并不是很有用。 –
使用“double sqrt(double)”还是“double sqrt(const double)”对调用代码没有丝毫影响。如果用户有:'double x = 3.14; double y = sqrt(x);''sqrt()'函数不能修改变量'x'而不管'const'是否存在(并且返回类型中的'const'也是毫无意义的) 。尽管如此,指针确实很重要。如果你有'char * fgets(const char * buffer,size_t buflen,FILE * fp);',它承诺不修改缓冲区指向的数据,这使得它无法作为输入函数 - 它必须修改缓冲区。 –