在代码中:
int main(){
int a = 10;
int * s = &a;
cout << s;
}
将按预期方式打印“ a”的内存地址。但是,当我尝试:
int main(){
char a = 10;
char * s = &a;
cout << s;
}
输出为垃圾值。可能是什么原因?
答案 0 :(得分:1)
这是因为operator<<
具有处理字符指针的特殊功能,因为它们是旧版C中的字符串。因此,将假定您提供的任何char *
都是指向旧版C中第一个字符的指针字符串,然后将其打印出来。
如果要专门将其视为指针,请将其强制转换为没有特殊处理的 类型的指针,例如:
cout << static_cast<void *>(s);