我很难理解这行代码:
static void *const Something = (void *)&Something;
Run Code Online (Sandbox Code Playgroud)
如何在"等号"的两边出现"Something"?谢谢!
编辑:这是什么意思?为什么我们需要这种代码?还有其他选择吗?
这意味着它Something是一个指向静态地址空间中自身的指针.它通常只用于创建一个可用于键控的唯一值,其功能如:objc_getAssociatedObject.
容器Something将在内存中相当任意的位置结束,例如0x12345.这行代码所说的是Something应该设置为地址的值Something(&运算符给出指针的地址).所以你将0x12345放入内存位置0x12345.因为没有其他变量可以占用该内存地址,Something所以相对于以这种方式创建的任何其他变量,保证是唯一的.
关于在作业双方使用变量:
x = x + 1; 一点都不奇怪,是吗?
在你的问题的情况下,声明Something是在"行"结束之前有效的声明:static void *const Something.
int x = x + 5;也是有效的,但x未初始化,因此可能包含垃圾值.&Something只要Something在左侧声明,就要求地址是真实的非垃圾值.
| 归档时间: |
|
| 查看次数: |
621 次 |
| 最近记录: |