先看程序:

#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






本文转载:CSDN博客