这是什么情况两个都对不上啊,a和p怎么都乱码

这是什么情况两个都对不上啊,a和p怎么都乱码,地址和值都没有打印出来

img

#include <iostream>
int main()
{
    char a = 0x66;
    char *p = &a;
    std::cout << a << "\n"
              << (const void *)p << std::endl;
    return 0;
}

在C++直接打印char*这种指针,默认匹配的操作符是打印char序列,或者可以认为是char数组,但要求结尾是/000,但p本身就是纯指针而非char序列,没有结束符,所以就是一种未定义的行为。
想打印指针地址,需要强制转换为void指针形式。