Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah `cout` memutuskan sama ada untuk mencetak alamat atau rentetan apabila anda melepasi penunjuk aksara?

Bagaimanakah `cout` memutuskan sama ada untuk mencetak alamat atau rentetan apabila anda melepasi penunjuk aksara?

Susan Sarandon
Susan Sarandonasal
2024-11-04 10:23:31232semak imbas

How does `cout` decide whether to print the address or the string when you pass a character pointer?

Memahami Lebihan Operator Strim untuk Penunjuk Char

Apabila mencetak penunjuk aksara menggunakan printf(), penentu penukaran menentukan sama ada alamat atau rentetan dicetak, seperti %u untuk alamat atau %s untuk rentetan. Walau bagaimanapun, dengan aliran C dan cout, bagaimanakah ia menentukan yang mana satu untuk dikeluarkan?

Pertimbangkan kod berikut:

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

Dalam contoh ini, cout cuba mentafsir cptr sebagai rentetan. Untuk mencetak alamat ch menggunakan cout, penukaran mesti digunakan untuk menyelesaikan kekaburan ini.

Penyelesaian: Menghantar ke Penunjuk Tidak Sah

Kaedah pilihan untuk mendapatkan alamat menggunakan cout adalah melalui jenis casting. Pendekatan yang betul ialah:

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

Dengan menghantar cptr kepada void *, kami memaksa cout untuk melaksanakan beban lampau yang sesuai yang mengambil penunjuk void (ostream& operator<< (ostream& o, const void *p )). Ini memastikan alamat dicetak seperti yang dimaksudkan.

Atas ialah kandungan terperinci Bagaimanakah `cout` memutuskan sama ada untuk mencetak alamat atau rentetan apabila anda melepasi penunjuk aksara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn