Почему полезен указатель точка-на-летучий, такой как «volatile int * p»?
volatile
это сказать компилятору не оптимизировать ссылку, чтобы при каждом чтении / записи не использовалось значение, хранящееся в регистре, а выполнялся реальный доступ к памяти. Я могу понять, что это полезно для некоторой обычной переменной, но не понимаю, какvolatile
влияет на указатель.
volatile int *p = some_addr;
int a = *p; // CPU always has to load the address, then does a memory access anyway, right?
Какая разница, если он был объявлен какint *p = some_addr
?