為什麼常量指標必須用乙個非常量的位址初始化

時間 2021-07-12 06:48:10

1樓:黃達

inta=

1;int*

constb=

&a;這個b是乙個「指標常量」。它指向的位址被理解為int型別。它可用int型別的變數(非常量)的位址來初始化。

const

inta=1

const

int*b=

&a;這個b是乙個「常量指標」指向的位址被理解為const int型別的位址。它可用乙個const int型別的變數(常量)的位址來初始化。

const

inta=1

;const

int*

constb=

&a;這個b是乙個「常量指標常量」,當然也是一種「常量指標」。它指向的位址被理解為cosnt int型別的位址。它可用cosnt int型別的變數(常量)的位址來初始化。

為什麼常量指標必須用乙個非常量的位址初始化?

指標初始化或者賦值,必須要型別對。型別不對,要轉換的時候,就要想清楚編譯器為什麼不讓你賦值,為什麼給你警告。就要想清楚你到底想要幹什麼,你到底正在幹什麼。

型別要對,首先要明確你的指標是常量(const變數)還是變數(非const變數),你的指標所指向的型別是常量還是變數。

2樓:

a 當然可以是常量,但 b 也得改成 const int * b = &a; 或者 const int * const b = &a;

因為對乙個常變數取位址 (&a) 得到的是乙個常量指標,只能將其賦給常量指標變數 (const int * b),或者常量指標常量 (const int * const b)。

想徹底的弄懂為什麼,你得學懂指標常量,常量指標,常量指標常量這三者分別是啥。

C 中define乙個常量和const是否完全相同?

scientificworld NO.define是直接定義巨集,在預處理階段你如果看一下輸出檔案就會發現裡面肯定已經沒有乙個 define了,同時那些用到了這個巨集的地方也已經被替換掉了。包括像 if,ifdef,ifndef,else,endif,progma這些也沒了 const是常量,不會被...

怎麼理解陳丹青說「活在今天必須是乙個非常優秀的機會主義者才行,你得足夠無恥」

lion wu 從未見過如此厚顏無恥之人,無恥起來真的連自己都罵的人,連他自己父母祖宗都被罵!這麼無恥之人,還大言不慚的說教,樹大旗,要建立陳派無齒教嗎? 三體文明建設 陳大師太謙虛了,要論騎牆,要論機會主義,誰能比得過陳大師啊。拿dw護照,入公尺國國籍,還能跑大陸 傳道 這份騎牆的功力,真正的鐵橋...

為什麼乙個非常優秀的男人會找乙個相貌平平甚至有些難看的女生?

延續愉快過程 兄弟,這種情況,第一,現實中不怎麼存在,非常優秀?what?你有見過幾個?第二為什麼會找你說的那種女生,因為玩夠了。 清淨 首先,相貌,優秀都是對比才可以體現,主觀對別人的判斷和給別人的定義並不是準確的。說一下我自己的觀點吧,不喜勿噴。確實相貌出彩可以給人好的第一感覺,但是這多人,相貌...