[英]What does getint (int *) mean?
getint (int *);
我不太確定getint (int *)
是什么意思? 有人可以解釋嗎?
這是一個聲明函數getint()
的函數原型。 該函數將指向int
指針作為參數。
在對函數進行原型設計時,無需指定參數名稱。
原型缺少返回類型,對於C,該返回類型默認為int
。 但是,省略返回類型會違反最新的C標准,因此這樣做的代碼可能被視為無效。
相當於
getint(int *);
雖然會
int getint(int * pi);
TL; DR getint (int *);
是一種非常糟糕的編程風格的函數前向聲明。 沒有任何顯式的返回類型,它將默認為int
。
推薦的寫方法是顯式指定返回類型,例如
如果是int
,例如
int getint(int *); //yes, omitting the identifier name is correct, see note below
要么,
int getint(int * outVar); //we can have the name, if we want.
如果void
,像
void getint(int *);
要么,
void getint(int * outVar);
或您想要的任何返回類型。
注意:
僅供參考,從C11
第6.7.6.3節“ 函數聲明符”(強調我的)開始
如果在聲明
'T D1'
中D1
具有以下形式:D( parameter-type-list )
...
參數類型列表指定函數參數的類型,並可以聲明該函數的參數的標識符 。
因此,標識符名稱是可選的。
該代碼無效C。如果可以編譯,請考慮升級到不超過15年的編譯器。
歷史課:
在較舊的C標准版本中,允許您在編寫函數聲明時省略返回類型,在這種情況下, getint(int *);
與int getint(int *);
含義相同int getint(int *);
,因為如果您未指定返回類型,則默認為int
。 但是,即使在1990年,這樣做也是一個壞習慣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.