帮助我理解这句话:
static int ** volatile ptr
请让我知道如何分析这个指针语句。
static
意味着这是静态变量——函数中的局部变量在源代码中只有一个副本,而不是在全局模块之间共享。
int **ptr
表示 ptr 是指向int
.
volatile
右侧*
表示指针本身是易失的,而不是指向的值。volatile 意味着对该变量的所有访问都必须是实际的内存操作,并且不允许大多数优化。
要在插入标记后处理标题文本: 4(static int 3( * 2( * 1(volatile ptr)))。由内而外:
1:由于程序可能不知道的原因,在运行时可以自由更改的变量。常见的原因是其他线程、信号或其他事件,以及指向真正是硬件控制器的“内存”的指针等。阻止编译器/优化器发出在此类更改下可能失败的代码。
2:指向该内存的易失性指针。所指向的不是易变的。
3:指向指针的指针,或指针数组。想想 char **argv; 再次,不是易变的。
4:静态:这取决于在声明中的位置:
有趣: const volatile 表示外部影响可以改变指针,但您的软件不能这样做。