考虑以下 C++ 代码:
void* a = &a;
为什么编译器不提示使用未声明的标识符?
另外,编译器认为变量 a
是什么?它是指向 void 对象的指针还是指向 void*
指针的指针?
最佳答案
C++ 中变量声明的范围可能非常令人惊讶:
void* a = &a;
^~~~~~~~~~~~~~~~~
a declared as `void*` from here on
因此,&a
是 void**
但由于任何指针类型都可以隐式转换为 void*
...
关于c++ - void *a = &a 如何合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224779/