关于字符串与指针的问题
#include <iostream>
using namespace std;
int main()
{
char *pt = "hehe";
cout<<&pt<<endl;
cout<<&pt[1]<<endl;
return 0;
}
输出结果:
0014FD98
ehe
请问:
1.0014FD98是pt这个字符串的地址还是存储*pt这个指针的地址?
2.为什么第二条输出语句输出的是ehe,而不是pt[1]的地址?如果想要输出pt[1]的地址,应该怎么写? 指针 字符串
[解决办法]
1
变量pt的类型是char*,即指向char类型的指针,&(pt)是对这个指针变量求地址
2
cout重载operator<<操作符时,对char*类型的输入参数认为它指向C风格字符串并输出该字符串
要想输出地址,可以改成cout<<( void * )( &pt[1] )<<endl;当然,改成任何类型的指针都行