一个关于字符串首地址的有关问题

一个关于字符串首地址的问题。
一个关于字符串首地址的有关问题

char a[5]={"1234"};
cout<<a<<endl;
我知道第二句的a是字符串的首地址,被重载在这里输出a所指向的内容,即1234。 问题是如果我想知道a的值,就是那个0x...的16进制表示的数怎么办啊?怎么才能得到?
------解决方案--------------------
cout<<&a<<endl;一个关于字符串首地址的有关问题
顺便说句美女很漂亮
------解决方案--------------------
cout<<&a<<endl;
------解决方案--------------------
这样更规范:
cout<<(void*)a<<endl;
------解决方案--------------------
用(void*)str的是将字符串首地址强制转换成了(void*);用&str是获得了这个数组的指针,也即是指向数组的指针,它的值恰好和首地址是相同的,我觉得两种方法都没错。原来传入字符串指针的时候输出整个字符串而不是指针的值不过是因为ostream专门对char*类型写了一个特化方法。只要想方设法讲char*转换成别的类型就行了。
    char str[256];
    cout << (void*)str << endl;
    cout << &str<< endl;
    cout << (void*)(str + 1) << endl;
    cout << &str + 1<< endl;
指针的加法移动多少地址是根据指向的内容的sizeof决定的,根据以上代码可以看出来&str的类型是指向256个char数组的指针。