我最近在閱讀關於使用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);',它承諾不修改緩衝區指向的數據,這使得它無法作爲輸入函數 - 它必須修改緩衝區。 –