如何输出字符串常量地址?
字符串常量是静态分配的,两个同样的字符串常量是否被分配在一起,这一点由实现确定:
const char* p = "heraclilus";
const char* q = "heraclilus";
if ( p == q )
std::cout << "one!\n";
else
std::cout << "two!\n";
以上在我的机器上 输出是:
one! //环境: Mac 10.5 / GCC
但当我做以下操作的时候,我便产生了一个想法:
std::cout << p << std::endl
<< q << std::endl;
输出:
heraclilus
heraclilus
if ( p == q ) 比较的是 heraclilus 的地址吗?安照前面书上学的 *p / p 的函义,应该是。
于是问题来了,std::cout 对 p 做了特殊的操作吗?让其显示的不是 p 所指向的 地址(&) ,而是 p 所指向地址的内容(heraclilus)。
我想输出 p / q 所指向的地址,应该怎么办?
如果我讲的不明白的话,我再重述下我的问题:
想输出 p / q 后得到的结果不要是:
heraclilus
heraclilus
而是想要
0xbffffa80 //地址