I often see the following function declaration:
some_func(const unsigned char * const buffer)
{
}
Any idea why the const is repeated before th
The first const
says that the data pointed to is constant and may not be changed whereas the second const
says that the pointer itself may not be changed:
char my_char = 'z';
const char* a = &my_char;
char* const b = &my_char;
const char* const c = &my_char;
a = &other_char; //fine
*a = 'c'; //error
b = &other_char; //error
*b = 'c'; //fine
c = &other_char; //error
*c = 'c'; //error
It's a constant pointer to a constant unsigned char. You can't change the pointer nor the thing it points to.