程序如下:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int a=10;
int *p=&a;
cout<<"a的地址"<<p<<endl;
cout<<"p的地址"<<&p<<endl;
char s='a';
//char *q=&s;
char *q="hello";
cout<<q<<endl;
cout<<*q<<endl;
system("pause");
return 0;
}
在windows XP Dev-C++上运行输出为:
a的地址0x22ff74
p的地址0x22ff70
hello
h
请按任意键继续. . .
如果将注释行去掉,将char *q=&s 行注释掉
则输出结果为:
a的地址0x22ff74
p的地址0x22ff70
at"
a
请按任意键继续. . .
原因:cout输出时,也是把q当成字符串向外输出的
由于字符串的结束符不知道在q指向的地址后面的什么位置
所以输出的字符串的首字符是a,但后面就不可预期了
结论:
整型指针,不会理解为字符串的,没有歧义 字符形指针,会当成字符串处理的 如果你想输出地址,可以加(int*)把q强制转换一下