当我们像 void *p 这样写 void 变量时;输出<<&p;输出<<p;所以它给了两个不同的地址,但为什么呢?

when we write void variable like void *p ; cout<<&p; cout<<p; so it give two different address but why?

C++输出给两个不同的地址 但是为什么编译器给出两个地址而不是我只写一个变量

void *p ;
cout<<&p<<p;

void *p ; 是未初始化的指针。所以你将在指针内部拥有实际的垃圾。当您执行 &p 时,您 return 正在访问指针 p 的地址。这就是为什么它们都 return 不同的值。

p 是一个指针,它指向内存中的不同位置,您可以使用 *p 访问该位置。
但是指针本身存储在某个地方,所以 &p returns 指针本身的地址。