C - 使用易失性指针

C - use of a volatile pointer

为什么要创建一个 volatile 指针?假设我想要一个指向 volatile 变量的 volatile 指针,以下哪个声明可以完成此操作:

volatile int *pData;

volatile int * volatile pData;

Why would one create a volatile pointer?

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

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

I want a volatile pointer which points to a volatile variable, which of the following declarations would accomplish this:

第2达到目标。 volatile int * volatile pData; 是一个:
pData as volatile pointer to volatile int


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

volitle 关键字最常用于此上下文中。

使用修饰符“volatile”的一个原因是编译器不会将变量优化为不存在。

使用修饰符 'volatile' 的另一个原因是,当代码引用该变量时,它会访问实际变量而不是某些寄存器中留下的值。

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