關於C 中char 型變數的位址輸出

2021-08-08 11:17:04 字數 841 閱讀 6775

在剛開始學習c/c++過程中,我們希望輸出各個變數的位址來窺探一些我們「百思不得其解」的現象,例如搞清函式堆疊相關的程式內部秘密。

先看下面示例:

將原始碼中

修改為:

我們看到同樣作為char型的變數m_char2輸出位址正常,

修改為:

為什麼會出現這樣現象,字串是以空終止符('\0')結尾的字元陣列,通過字串中第乙個字元的指標訪問字串。字串的值是字串中第乙個字元的(常量)位址。&m_char1是乙個char*變數,但&m_char1儲存的字串是沒有終止符('\0'),因此輸出亂碼。

無論要輸出哪一種變數位址,強制型別轉換可以解決大多數問題,如上將char*轉換為void*輸出。

C 中的char型變數

最簡單的字元資料型別是 char 資料型別。該型別的變數只能容納乙個字元,而且在大多數系統上,只使用乙個位元組的記憶體。以下示例即宣告了乙個名為 letter 的 char 變數。請注意,這裡的字元常數就是賦給變數的值,要用單引號括起來。char letter a 下面的程式使用了乙個 char 變...

c 中關於char型變數與字串位址的輸出

參考至 在c裡面如果指標是乙個基本數值型 int foalt long等,如果輸出裡有 cout ptr endl 其中ptr是指標的名,則輸出的值是指標的位址,如果是char char指標 則輸出的是char指標的值。在c 中,熟悉int和char型的變數是最基本不過的了,不過,我想,很多初學者會...

關於字元型char變數

寫程式時,意外發現個很不容易察覺問題出在哪的問題的 scanf c ch scanf c c printf ch c n ch printf c c n c 如果輸入是 a b 那麼輸出會是 ch a c 問題出在哪?如果將 改為 scanf c ch scanf c c printf ch c n...