 
                            ...
The remove_spaces() function in this example accepts a pointer to a string str and a string length slen and removes the space character from the string by shifting the remaining characters towards the front of the string. The function remove_spaces() is passed a const char pointer. It then typecasts the const qualification away and proceeds to modify the contents.
| Code Block | ||
|---|---|---|
| 
 | ||
| 
void remove_spaces(const char *str, size_t slen) {
   char *p = (char*)str;
   size_t i;
   for (i = 0; i < slen && str[i]; i++) {
      if (str[i] != ' ') *p++ = str[i];
   }
   *p = '\0';
}
 | 
...
In this compliant solution the function remove_spaces() is passed a non-const char pointer. The calling function must ensure that the null-terminated byte string passed to the function is not const by making a copy of the string or by other means.
| Code Block | ||
|---|---|---|
| 
 | ||
| 
void remove_spaces(char *str, size_t slen) {
   char *p = str;
   size_t i;
   for (i = 0; i < slen && str[i]; i++) {
      if (str[i] != ' ') *p++ = str[i];
   }
   *p = '\0';
}
 | 
...
In this example, a const int array vals is declared and its content modified by memset() with the function, clearing the contents of the vals array.
| Code Block | ||
|---|---|---|
| 
 | ||
| 
const int vals[] = {3, 4, 5};
memset(vals, 0, sizeof(vals));
 | 
...
If the intention is to allow the array values to be modified, do not declare the array as const.
| Code Block | ||
|---|---|---|
| 
 | ||
| 
int vals[] = {3, 4, 5};
memset(vals, 0, sizeof(vals));
 | 
...