指向字符的指针中的垃圾值

Garbage value in pointer to char

本文关键字:指针 字符      更新时间:2023-10-16

在代码中:

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);