定义一个指针来引用同一变量名的引用?
Defining a pointer to refere to same variable name's reference?
在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
相关文章:
- 你能重载对象变量名本身返回的内容吗
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 在C/C++中将变量名定义为__00000001有什么好处吗
- 多个"常量引用"变量可以共享同一个内存吗?
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- C++20 概念:如何在"requires"子句中引用类名?
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- C++方法中的引用变量
- C++ - 声明中变量名后面的括号
- 如何使替换 c 函数的变量名成为错误?
- 作为赋值(增加引用变量)C++的左操作数所需的左值
- 是否可以创建没有变量名的变量
- 可以在编译时隐式引用类名吗
- 使用更改此变量的函数在同一行中打印引用变量
- fstream库,试图创建一个变量名为(c++)的文件
- 将延迟变量分配给引用变量
- 一个数组C++中的消息和变量名
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 定义一个指针来引用同一变量名的引用?
- 通过引用传递时,是否应在函数中保持相同的变量名