Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why C++ would not print the memory address of a char but will print int or bool? [duplicate]

Possible Duplicate:
Why is address of char data not displayed?

Here is the code and the output:

int main(int argc, char** argv) {

    bool a;
    bool b;

    cout<<"Address of a:"<<&a<<endl;
    cout<<"Address of b:"<<&b<<endl;

    int c;
    int d;

    cout<<"Address of c:"<<&c<<endl;
    cout<<"Address of d:"<<&d<<endl;

    char e;    
    cout<<"Address of e:"<<&e<<endl;

    return 0;
}

The output:

Address of a:0x28ac67

Address of b:0x28ac66

Address of c:0x28ac60

Address of d:0x28ac5c

Address of e:

My question is: Where is the memory address of the char? And why is it not printed?

Thank you.

like image 257
Koray Tugay Avatar asked Nov 23 '12 20:11

Koray Tugay


1 Answers

Strings in C/C++ can be represented by char*, the same type as &e. So the compiler thinks you're trying to print a string. If you want to print the address, you could cast to void*.

std::cout << static_cast<void *>(&e) << std::endl;
like image 122
Charles Welton Avatar answered Sep 18 '22 00:09

Charles Welton