天天看點

C語言 | 每日基礎(57)

C語言 | 每日基礎(57)

古代的劍客們與

對手相逢時,無

論對手多麼強大,

明知不敵,也要亮出自己的劍!

讀者:“const char *p” 和 “char * const p” 有何差別?

阿一:“const char *p” (也可以寫成 “char const *p”) 聲明了一個指向字元常量的指 針, 是以不能改變它所指向的字元; “char * const p” 聲明一個指向 (可變) 字元的 指針常量, 就是說, 你不能修改指針。“從裡到外” 看就可以了解它們。

讀者:為什麼我不能向接受 const char ** 的函數傳入 char **?

阿一:你可以向接受 const-T 的指針的地方傳入 T 的指針 (任何類型 T 都适用)。但是, 這個允許在帶修飾的指針類型上輕微不比對的規則 (明顯的例外) 卻不能遞歸 應用, 而隻能用于最上層。如果你必須指派或傳遞除了在最上層還有修飾符不比對的指針, 你必須明确 使用類型轉換 (本例中, 使用 (const char **)), 不過, 通常需要使用這樣的轉換意 味着還有轉換所不能修複的深層次問題。

讀者:怎樣正确聲明 main()?

阿一:int main(), int main(void) 或者 int main(int argc, char *argv[])。

有時候,正是那些意想不到之人,成就了無人能成之事。

——圖靈

C語言 | 每日基礎(57)

小編二維碼

長按/加好友

- END -