-1

帮助我理解这句话:

static int  ** volatile ptr

请让我知道如何分析这个指针语句。

4

2 回答 2

2

static意味着这是静态变量——函数中的局部变量在源代码中只有一个副本,而不是在全局模块之间共享。

int **ptr表示 ptr 是指向int.

volatile右侧*表示指针本身是易失的,而不是指向的值。volatile 意味着对该变量的所有访问都必须是实际的内存操作,并且不允许大多数优化。

于 2012-11-22T12:49:01.477 回答
0

要在插入标记后处理标题文本: 4(static int 3( * 2( * 1(volatile ptr)))。由内而外:

1:由于程序可能不知道的原因,在运行时可以自由更改的变量。常见的原因是其他线程、信号或其他事件,以及指向真正是硬件控制器的“内存”的指针等。阻止编译器/优化器发出在此类更改下可能失败的代码。

2:指向该内存的易失性指针。所指向的不是易变的。

3:指向指针的指针,或指针数组。想想 char **argv; 再次,不是易变的。

4:静态:这取决于在声明中的位置:

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

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

于 2012-11-22T13:06:11.367 回答