定义一个指向引用相同变量名称引用的指针?

Muh*_*edy 3 c c++ pointers objective-c

在objective-c中,我真的无法理解这一点:

void *x = &x;

我的理解是:

声明泛型指针(因此,类型为void*),指针变量名称为x,该指针指向一个变量的引用(即应被宣布already-但它不是)名为x.

对我来说很困惑!

Vla*_*cow 5

要总结一下这个宣言

void *x = &x;
Run Code Online (Sandbox Code Playgroud)

是有效的,您应该考虑C标准中的两个重要引用.

第一个说明标识符的范围从何处开始(6.2.1标识符的范围)

7结构,联合和枚举标记的范围在声明标记的类型说明符中标记出现之后开始.每个枚举常量都具有在枚举器列表中定义枚举器出现之后开始的范围.任何其他标识符的范围都在其声明者完成之后开始.

第二个说明是否可以将任何类型的指针赋给指向void的指针(6.3.2.3指针)

1指向void的指针可以转换为指向任何对象类型的指针.指向任何对象类型的指针可以转换为指向void的指针,然后再返回; 结果应该等于原始指针.

所以在这个宣言中

void *x = &x;
Run Code Online (Sandbox Code Playgroud)

变种x的范围在赋值运算符之前立即开始.它的完整类型是void *,它可以分配任何其他类型的指针.在右手中有类型的表达void **.根据第二个引用,它可以分配给x,因为x是指向void的指针.

结果x将存储自己的地址.