什么是static int ** volatile ptr?

时间:2012-11-22 12:38:15

标签: c pointers

帮助我理解这句话:

static int  ** volatile ptr

请让我知道如何分析这个指针声明。

2 个答案:

答案 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:这取决于声明的位置:

  • 在任何函数之外:ptr值只有编译范围。
  • 函数内部:内存将由函数的所有调用和/或线程共享。在编译时分配一次。

有趣:const volatile表示外部影响可以改变指针,但是你的软件不能这样做。