C 函式引數的規則

2021-09-06 10:20:55 字數 1260 閱讀 6818

【規則6-1-1引數的書寫要完整,不要貪圖省事只寫引數的型別而省略引數名字。如果函式沒有引數,則用void填充。

例如:void setvalue(int width, int height);   // 良好的風格

void setvalue(int, int);                // 不良的風格

float getvalue(void);       // 良好的風格

float getvalue();           // 不良的風格

【規則6-1-2引數命名要恰當,順序要合理。

例如編寫字串拷貝函式stringcopy,它有兩個引數。如果把引數名字起為str1和str2,例如

void stringcopy(char *str1, char *str2);

那麼我們很難搞清楚究竟是把str1拷貝到str2中,還是剛好倒過來。

可以把引數名字起得更有意義,如叫strsource和strdestination。這樣從名字上就可以看出應該把strsource拷貝到strdestination。

還有乙個問題,這兩個引數那乙個該在前那乙個該在後?引數的順序要遵循程式設計師的習慣。一般地,應將目的引數放在前面,源引數放在後面。

如果將函式宣告為:

void stringcopy(char *strsource, char *strdestination);

別人在使用時可能會不假思索地寫成如下形式:

char str[20];

stringcopy(str, 「hello world」);   // 引數順序顛倒

【規則6-1-3如果引數是指標,且僅作輸入用,則應在型別前加const,以防止該指標在函式體內被意外修改。

例如:void stringcopy(char *strdestination,const char *strsource);

【規則6-1-4如果輸入引數以值傳遞的方式傳遞物件,則宜改用「const &」方式來傳遞,這樣可以省去臨時物件的構造和析構過程,從而提高效率。

c標準庫函式printf是採用不確定引數的典型代表,其原型為:

int printf(const chat *format[, argument]…);

這種風格的函式在編譯時喪失了嚴格的型別安全檢查。

函式引數傳遞規則 一

1 函式引數傳遞規則 函式介面的兩個要素是引數和返回值,c中傳遞方式 值傳遞和位址傳遞 即指標傳遞 c 中 值傳遞,位址傳遞和引用傳遞。規則一 不論是函式的原型還是定義,都要明確寫出每個引數的型別和名字,如果函式沒有引數,那麼使用void而不要空著。因為標準c把空的引數列表解釋為可以接受任何型別和個...

c 函式呼叫規則

呼叫規則主要是指函式被呼叫的方式,常見的有 stdcall,fastcall,pascal等規則。不同的規則在引數壓入堆疊的順序是不同的,同時在有呼叫者清理壓入堆疊的引數還是由被呼叫者清理壓入堆疊的引數上也是不同的。一般來說,如果你沒有顯式的說明呼叫規則的話,編譯器會統一按照 cdecl來處理 wi...

C 函式的引數

函式的引數 一 函式的ref out引數 函式引數預設是值傳遞的,也就是 複製乙份 也就是 複製乙份 例子 int age 20 incage age console.writeline age age ref必須先初始化,因為是引用,所以必須先 有 才能引用,而out則是內部為外部賦值,所以不需要...