首頁  >  文章  >  後端開發  >  為什麼在使用 char 指標時“cout”列印字元而不是地址?

為什麼在使用 char 指標時“cout”列印字元而不是地址?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 04:52:02583瀏覽

Why does `cout` print the character instead of the address when working with char pointers?

了解使用 cout 進行字元指標列印

處理 char 指標時,了解它們在不同環境中的處理方式至關重要。雖然帶有 %u 和 %s 轉換說明符的 print() 可以控制列印位址或字串,但在使用 cout 時會出現挑戰。

考慮以下程式碼片段:

<code class="cpp">char ch = 'a';
char *cptr = &ch;
cout << cptr << endl;

這裡,所需的輸出是 cptr 中儲存的 ch 的位址。然而,預設情況下,cout 傾向於將 cptr 視為常規字串並列印字元“a”而不是其位址。

解決列印困境

要修正此問題,我們需要強制 cout 將 cptr 解釋為 void 指標而不是 char 指標。這使我們能夠利用專門處理 void 指標並列印其位址的 ostream& 運算子。

為了實現這一點,我們可以使用如下的強制轉換:

<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>

透過將cptr 強制轉換為void 指針,重載決策選擇正確的運算符,從而產生所需的地址列印。

以上是為什麼在使用 char 指標時“cout”列印字元而不是地址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn