Предположим, у меня есть следующее
struct my_struct ** value;
Я понимаю разницу между
struct my_struct volatile * other_value; // pointer is volatile
и
struct * volatile other_value; // what pointer points to is volatile
, но в чем разница между
struct my_struct * volatile * value; // call this (1)
и
struct my_struct ** volatile value; // call this (2)
Правильно ли говорить, что (1) означает, что указатель, на который указывает значение, является изменчивым, а (2) означает, что значение является изменчивым, и указатель, на который оно указываети данные, на которые указывает указатель, не являются изменчивыми?Или у меня это задом наперед?
В более общем случае рассмотрим что-то, что может выглядеть следующим образом
struct my_struct ***** volatile *** value
, какой указатель в этой "серии" указателей является изменчивым указателем?Будет ли указатель перенаправлен (это правильная терминология?) 3 раза от значения или 4?Иными словами, всегда ли volatile работает с самым правильным значением / ptr / оператором (какая здесь будет правильная терминология?).
Например,
struct my_struct ******** volatile value
означает, что значение является изменчивым
struct my_struct ******* volatile * value
означает, что указатель, на который указывает значение указателя, является изменчивым
struct my_struct ****** volatile ** value
означает, что указатель, на который указывает указатель, на который указывает значение, является изменчивым.И так далее.Правильно ли мое понимание?
Редактировать: Я был полностью неправ.volatile применяется слева, а не справа.