Home > Article > Backend Development > How to Print Addresses with Char Pointers Using `cout`?
Cout Interpretation of Char Pointers
Unlike printf(), which offers specific conversion specifiers (%u or %s) to determine whether to print an address or the entire string pointed to by a char pointer, cout requires an explicit approach for this distinction.
Example Problem:
Consider the following code snippet:
<code class="cpp">int main() { char ch = 'a'; char *cptr = &ch; cout << cptr << endl; return 0; }
In this example, with the default GNU compiler, cout interprets the char pointer as a C-style string and attempts to print the character pointed to by cptr. However, if the intention is to print the address of ch instead, a different approach is necessary.
Solution:
To print the address of ch using cptr with cout, explicit type casting is required. This is achieved by utilizing the static_cast<> operator, as demonstrated below:
<code class="cpp">cout << static_cast<void *>(cptr) << endl;</code>
By explicitly casting cptr to void *, the overload resolution selects the appropriate ostream& operator that takes a void pointer as an argument. This correctly prints the address of ch.
The above is the detailed content of How to Print Addresses with Char Pointers Using `cout`?. For more information, please follow other related articles on the PHP Chinese website!