Для параметра
int const * num // num is a pointer to const int.
сопзЬ является защита num
точек to.The программирования может изменить значение num
но не *num
. В то время как для
int const * const num // num is a const pointer to const int
крайний левый const
является защита num
указывает на то время самый правый защищает указатель num
это сам. В этом случае ни num
, ни *num
не изменится.
ПРИМЕЧАНИЕ: Понимание того, что делает
T const *p; // T is any valid type
средства (более точно).
Это означает, что программа может использовать выражение p
для изменения значения объекта-указателя, которое p
обозначает, но не может использовать выражение *p
, чтобы изменить значение любых объектов, которые может обозначить *p
. Если программа имеет другое выражение e
неквалифицированного типа, которое обозначает объект, который также обозначает *p
, программа все еще может использовать e
для изменения этого объекта.
Немного связано: вы можете найти [этот ответ на предыдущий вопрос] (http://stackoverflow.com/questions/14562845/why-does-passing-char-as-const-char-generate-a-warning/ 14566215 # 14566215) интересный. не связанный напрямую с вашим вопросом, так что не обман, но проверьте список типов указателей и эффекты 'const'. – WhozCraig