Home > Blockchain >  Void Pointer Usage
Void Pointer Usage

Time:12-08

#include <iostream>

int main()
{
    char *p = new char[1024];  
    std::cin >> p; 

    char q = *p;
    
    std::cout << "&q = " << (void*)&q << '\n';
    
    return 0;
}


My question is what is the meaning of (void*) in this case and why does it output the address of q but if this snippet looked like this:

std::cout << "&q = " << &q << '\n';

it outputs the character inputted and gibberish after like so: aó√ä²$↔4 where I entered a as the char. Does the usage of (void*) only apply to characters or would I have to use this when I want to output the address of q lets say but its an int or a string.

Thanks

CodePudding user response:

Insertion operator (<<) for std::ostream objects (of which std::cout is one of the examples) has a specific overload for char*/const char* pointers, where it treats them as C-style null-terminated strings (of which &q obviously is not).

For all other pointers (including a void* one), a different overload is used, the one which just prints the pointer's value.

  • Related