在代码中:
int main(){
int a = 10;
int * s = &a;
cout << s;
}
“a”的内存地址按预期打印。但是,当我尝试时:
int main(){
char a = 10;
char * s = &a;
cout << s;
}
输出是一个垃圾值。这可能是什么原因?
最佳答案
是因为operator<<
具有处理字符指针的特殊功能,因为它们是遗留 C 中的字符串。因此它将假定任何 char *
你给它一个指向遗留 C 字符串中第一个字符的指针,然后这样打印它。
如果你想专门将它当作一个指针,将它转换为一个指针类型而不特殊处理,比如:
cout << static_cast<void *>(s);
关于c++ - 指向 char 的指针中的垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54500106/