Char 資料顯示異常的位址
在一個包含int、char 和string 等各種類型資料成員的類別的程式中,當列印這些資料成員的地址時,出現了意想不到的觀察結果。顯示 int 和 string 的位址時,char 資料成員的位址顯示為空白。
要解決此問題,請考慮 char 資料類型的底層表示形式。當使用 & 運算子取得 char 變數的位址時,您將取得指向 char 的指標。但是,流插入運算子 (
要修正此行為,請使用 static_cast 將 char 變數的位址明確轉換為 void 指標。透過這樣做,您可以指示流插入運算子將值解釋為位址而不是字串。
<br>cout (&b)
此外,當類別資料成員被聲明為公共時,會發生一些有趣的事情。現在顯示 char 變數的位址,但與 int 變數的位址相比,偏移量為 8 個位元組。
<br> ... int : Something <br> .. . 字元:something_2<br> ... 字串: some_3<br>
有趣的是,something_2 - some 永遠是8。這源自於應用於類別成員以實現高效能記憶體佈局的填充。 char 變數儘管只佔用 1 個位元組,但由於對齊要求而分配了 4 個位元組。這個 3 位元組填充創建了觀察到的偏移量。
以上是為什麼列印類別中 Char 成員的位址有時會顯示為空白,而不是為什麼會有 8 個位元組的偏移量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!