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