c++ 字符的地址为什么会乱码

2025-03-22 20:29:32
推荐回答(3个)
回答1:

是cout的原因,cout因为没有指定输出格式,默认会把&c当做是字符输出,所以会有乱码。
在C语言的printf中,由于指定了输出格式,所以可以正确显示c的地址。
=========================================
#include
#include
using namespace std;

int main()
{
char a='w';
printf("%p\n",&a);//指定了输出一个指针
cout << &a << endl;//C++的编译器默认把&a当做是一个字符,会输出乱码
cout << (void*)(&a) << endl;//通过强制转换,告诉C++编译器&a是一个地址
return 0;
}

回答2:

第一句输出语句。因为cptr是char*,所以默认输出cout<
#include
using namespace std;
int main()
{
char c='a';
char *cptr=&c;
char **cptrptr=&cptr;
cout<<"Address of Var c="<<(void*)cptr< cout<<"Data of Var c="<<*cptr< cout<<"Address of Pointer cptr="< cout<<"Address of Var c="<<(void*)*cptrptr< *cptr=2+*cptr;
cout<<"Data of Var c="<<*cptr<
system( "pause" );
}

回答3:

字符串,以\0结尾,否则cout函数不只在哪结尾