这个,你就要明白cout的工作机制了。
首先cout<
这里p是存有‘w’的内存地址,这是毫无疑问的,但是cout<
p是指针变量,执行p = &a后 p 里面装的是a的地址,而&p才是p的地址;cout << p << endl;输出p指向的地方开始起的一个字符串,直到遇到'\0',但是a后面的空间不是'\0'所以你看到的是w+一堆乱码,cout << *p << endl才是输出w
p里放的是a的地址,而a里放的是w
char a='w'; //a是变量,用于存放一个字符常量
char *p=NULL; //p是指针变量,用于存放指针的变量,并初始化为空指针
p=&a; //p指向变量a,存放的是a的地址,利用p可以间接访问a的值,*p,&为取地址符,*为间接运算符
cout<
cout<<&p<
p也是一个变量,只不过它存放的值是另一个变量(或其他对象)的地址