c 指標遇到的問題

2022-06-13 18:25:40 字數 836 閱讀 9638

1樓:匿名使用者

對於指標的輸出:cout物件可能呼叫兩個過載《的函式之一:

第一個過載 << 的函式是一個成員函式,該函式的原型如下:

ostream & operator <<(void *ptr);

該函式的目的是列印指標值。

所以對於任何型別的指標(除了char *),預設呼叫的是這個函式。

2. 第二個過載 << 的函式是一個非成員函式,該函式的原型如下:

ostream & operator <<(ostream & out, const char *str);

該函式用於列印字元指標所指的字串,而不是指標值。

所以你的問題是  對於p呼叫了全域性的operator 《過載函式,對於p1呼叫了類成員函式operator <<

樓主可以看看函式過載解析,對於char指標編譯器優先呼叫全域性版本的operator << 函式,所以列印出來的就是字串, 對於非char指標只能呼叫成員版本的operator<<, 所以列印的是指標值。

同理對於下面的語句:

cout.operator << ("hello");

輸出的將是指標值,而不是字串hello

2樓:匿名使用者

如果我沒記錯的話這是cout 《固有的特性,就是遇到char*就輸出字串,遇到別的型別的指標就輸出地址。如果需要輸出字串的地址的話可以先做一個強制型別轉換把char*轉換成void*再輸出

3樓:匿名使用者

因為函式過載,所以會判斷不同的型別進行不同的操作。

cout是一個ostream型別的變數,ostream對《運算子進行了過載

c語言指標問題,C語言指標問題

記憶體對齊的緣故。p buf 作為一個指標,它的值是記憶體的某個位元組的地址。如果想要把 p buf 強制轉換版 成一個 unsigned int 型別的指權針,需要滿足一個必要條件,就是 p buf 的值必須能夠被4整除。之所以是4,是因為 unsigned int 是要佔4個位元組的 c語言結構...

c 指標陣列問題,C 中關於指標陣列的問題。

是錯誤的。char cchar count 宣告瞭cchar是有count個元素的陣列,每個元素都是指向char型變數的指標。但cin cchar i 卻試圖給cchar的第二個元素 指標 賦一個鍵盤值 這裡指標還沒有確定指向,是隨機的,它隨機地指向了不能寫入的地方,就要出錯。這裡應該先給指標陣列賦...

關於C語言指標問題,求大神,C語言指標的問題,求大神!!

第一個函式的兩個指標是區域性變數,函式完了就銷燬了,換不換都一樣,第二個是直接操作指標指向的地方 記憶體單元 也就是直接操作變數。不恰當的比方,好比停車,有個圖紙記錄了每個車位停的什麼車,第一個就相當於另外拿了個圖紙畫了一下想要的位置,原來的圖沒變,函式結束後來的圖被扔了,原來的圖保留著,實際的車並...