Помимо других упоминаний, что вы можете передать char**
в функцию, которая принимает const char **
,
const char**
- это неконстантный указатель на const char*
, вы можете объявить его и свободно поместить в него значения типа const char*
.
С другой стороны, вы не сможете сделать это, если объявите это как const char * const *
или const char * const * const
.
yourfunc(const char **p);
...
const char *array_str[10];
array_str[0] = "foo"; /* OK, literal is a const char[] */
yourfunc(array_str);
Вот что cdecl
говорит:
cdecl> explain const char **table
declare table as pointer to pointer to const char
cdecl> explain const char * const *table
declare table as pointer to const pointer to const char
cdecl> explain const char * const * const table
declare table as const pointer to const pointer to const char