先看程序:
- #include <iostream>
- using namespace std;
-
- int main()
- {
- char c = 'A';
- cout << &c << endl;
-
- return 0;
- }
结果为乱码,为什么呢? 因为cout将&c当成了char *形式了,进而认为输出一个字符串,验证如下:
- int main()
- {
- char c = 'A';
- cout << &c << endl;
- printf("%s\n", &c);
-
- return 0;
- }
可以看到,产生的乱码是相同的,那么如何才能正确地输出c的地址呢?见下:
- #include <iostream>
- using namespace std;
-
- int main()
- {
- char c = 'A';
- printf("%p\n", &c);
- cout << (void *)&c << endl;
-
- return 0;
- }
结果为:
0012FF7F
0012FF7F