В объявлении, подобном const * const T
, первый const
(перед *
) означает, что указатель на равен const
(т.е. это указатель на const T
). const
после *
означает, что сам указатель равен const
(т.е. не может быть изменен, чтобы указывать на что-либо еще).
Вы можете прочитать объявление от объекта, объявленного наружу, поэтому const unsigned char * const buffer
читается как: "буфер является константным указателем на символ const без знака" (вот почему const
всегда должен быть помещен после что он изменяет - с ним раньше вы должны переставлять вещи, чтобы составить предложение - с этим объявленным как unsigned char const * const buffer
, перевод на английский язык прост и понятен (или, возможно, "прямолинейен", так как вы на самом деле читаете из справа налево в этом случае).