定义一个指针来引用同一变量名的引用?

Defining a pointer to refere to same variable name's reference?

本文关键字:引用 变量名 指针 一个 定义      更新时间:2023-10-16

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

void *x = &x;

我的理解是:

声明一个通用指针(因此类型为void*),指针变量名为x,该指针指向一个名为x的变量(应该已经声明,但它不是)的引用。

我很困惑!

总结此声明是否为

void *x = &x;

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

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

7结构、并集和枚举标记的作用域仅从在声明标签每个枚举常量的作用域都在其定义枚举器在枚举器列表中的外观任何其他标识符的作用域在其声明人

第二个说明是否可以将任何类型的指针分配给指向无效的指针(6.3.2.3指针)

1指向void的指针可以转换为指向对象类型指向任何对象类型的指针都可以转换为指向void的指针并再次返回;结果应与原始指针。

所以在这份声明中

void *x = &x;

变量x的作用域开始于赋值运算符之前。它的完整类型是void *,并且可以为它分配任何其他类型的指针。在右手边有一个类型为void **的表达式。根据第二个引号,它可以分配给x,因为x是指向void的指针。

因此,x将存储其自身的地址。

对于C和C++:

x被分配其自己的地址。它随后指向自己。

基于对@alk-answer:的理解

正如您所说:

int y = 10;
void* x = &y;

但在这种情况下,x指向自己,而不是y