處理 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中文網其他相關文章!