指向char的指针中的垃圾值

时间:2019-02-03 05:02:12

标签: c++ pointers char

在代码中:

int main(){
int a = 10;
int * s =  &a;
cout << s;
}

将按预期方式打印“ a”的内存地址。但是,当我尝试:

int main(){
char a = 10;
char * s =  &a;
cout << s;
}

输出为垃圾值。可能是什么原因?

1 个答案:

答案 0 :(得分:1)

这是因为operator<<具有处理字符指针的特殊功能,因为它们是旧版C中的字符串。因此,将假定您提供的任何char *都是指向旧版C中第一个字符的指针字符串,然后将其打印出来。

如果要专门将其视为指针,请将其强制转换为没有特殊处理的 类型的指针,例如:

cout << static_cast<void *>(s);