【发布时间】:2014-05-03 20:37:59
【问题描述】:
我了解您何时需要指向易失性值的指针(例如,读取内存映射的外围设备)。但是你什么时候需要指针本身是可变的?>
【问题讨论】:
-
同理,内容(即地址)可能会在当前源代码之外发生变化。 C 可以在可能发生这种情况的各种设备上使用。
-
您能否详细说明“指针本身易变”的意思?请记住,
volatile char *p将p声明为指向volatile char的指针。您是否在询问类似:char *volatile p;声明p是指向char的volatile指针?如果是这样,出于同样的原因,任何变量都可能成为volatile。 -
unsigned char* volatile ptr; // 指针本身是可变的
-
Paul,有什么具体的例子可以说明这种情况会发生在哪里?我的背景是嵌入式系统。
-
没错,就是这样。答案仍然存在:出于同样的原因,任何其他变量都可能被声明为
volatile。想象一下,例如,某些硬件将指向函数的指针存储在内存中某个已知的固定位置,并每 74 毫秒更新一次。