首頁 > 後端開發 > C++ > 為什麼我的 C Char 成員位址會列印為空白,為什麼有 8 位元組偏移?

為什麼我的 C Char 成員位址會列印為空白,為什麼有 8 位元組偏移?

Susan Sarandon
發布: 2025-01-03 02:51:38
原創
825 人瀏覽過

Why Does My C   Char Member's Address Print Blank, and Why Is There an 8-Byte Offset?

偵錯位址列印異常

在涉及具有int、char 和string 資料成員的類別的C 程式中,列印它們的位址會引發眉。當訪問 char 成員時,輸出神秘地保持空白。此外,將公共 char 成員轉換為 void 指標會顯示偏移量為 8,需要進一步調查。

缺少 Char 位址:

空白 char 位址的問題輸出源自於 & 運算子的解釋方式。預設情況下,在 char 變數上使用 & 將傳回指向 C 樣式字串 (char) 的指標。這會導致過載

解決問題:

列印char 成員的位址正確,需要明確轉換為 void*。此強制轉換表明該指針應被視為通用指針,從而防止

cout << "address of char   :" << (void*) &b << endl;
登入後複製

或者,使用static_cast 是在現代C 中轉換指針的更安全且首選的方法:

cout << "address of char   :" << static_cast<void*>( &b ) << endl;
登入後複製

公共成員中的偏移量為8:

當int、char、string成員為public時,位址之間的偏移量char 和 string 成員的總數總是 8。這是因為在公共類別中,成員變數按照宣告的順序排列在類別結構中。因此,字串成員位於字元成員之後,固定偏移量為 8 個位元組。

以上是為什麼我的 C Char 成員位址會列印為空白,為什麼有 8 位元組偏移?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板