どうして

698 ワード

まずプログラムを見てください.
#include 
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
", &c); return 0; }
では、発生した文字化けしが同じであることがわかりますが、cのアドレスを正しく出力するにはどうすればいいのでしょうか.以下を参照してください.
#include 
using namespace std;

int main()
{
	char c = 'A';
	printf("%p
", &c); cout << (void *)&c << endl; return 0; }
結果:
0012FF7F 0012FF7F