C - 使用易失性指针

时间:2017-10-13 20:58:36

标签: c keyword volatile

为什么会创建一个 volatile 指针?假设我想要一个指向 volatile 变量的 volatile 指针,以下哪个声明可以实现此目的:

volatile int *pData;

volatile int * volatile pData;

2 个答案:

答案 0 :(得分:3)

  

为什么会创建一个易失性指针?

示例:访问指针由后台进程更新的数据。

Stuff * volatile VideoFrame;
for (;;) {
  Block_Changes();
  Stuff MyCopy = *VideoFrame;
  Allow_Changes();
  Use(&MyCopy);
}
  

我想要一个指向volatile变量的volatile指针,以下哪个声明可以完成此任务:

2 nd 符合目标。 volatile int * volatile pData;是:
 pData as volatile pointer to volatile int

1 st volatile int *pData;是指向易失性数据的非易失性指针:
  pData as pointer to volatile int

volitle关键字最常用于此上下文。 @ Eugene Sh.

答案 1 :(得分:0)

使用修饰符“volatile'”的一个原因因此编译器不会优化变量。

使用修饰符“挥发性”的另一个原因是'当代码引用该变量时,它会访问实际变量而不是某些寄存器中剩余的值。

使用修饰符“挥发性”的另一个原因是'当变量值可以在当前程序的控制之外改变时。例如,硬件寄存器或“中断”时。更新应用程序正在读取的变量。

相关问题