c++ - void *a = &a 如何合法?

标签 c++

考虑以下 C++ 代码:

void* a = &a;

为什么编译器不提示使用未声明的标识符?

另外,编译器认为变量 a 是什么?它是指向 void 对象的指针还是指向 void* 指针的指针?

最佳答案

C++ 中变量声明的范围可能非常令人惊讶:

void* a =               &a;
         ^~~~~~~~~~~~~~~~~
          a declared as `void*` from here on

因此,&avoid** 但由于任何指针类型都可以隐式转换为 void*...

关于c++ - void *a = &a 如何合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224779/

相关文章:

c++ - 基于上下文的转换将在 marmalade sdk 中被记住

c++ - Apache 模块 - 获取请求正文

c++ - 什么是 type* volatile* name = value?

c++ - 我可以在没有 SDL 的情况下使用 SDL_mixer 吗?

c++ - 编译错误: "pointer can only be subtracted from another pointer"

c++ - IMediaControl::stop 在没有信号时挂起

c++ - 范围解析而不是 .模板类参数的运算符

宏中的 C++ 模板

c++ - const 指针作为类字段赋值

C++:ostream 和 ostringstream 有什么区别?