c - What is char * const *? -


so seems means a pointer constant pointer char. points char * const, far good.

what gets me confused , how saw used. looking @ man page qsort , example following convert pointers elements of char ** (an array of strings), (pointers elements seen const void *) normal char pointers feedable strcmp:

static int cmpstringp(const void *p1, const void *p2) {     /* actual arguments function "pointers        pointers char", strcmp(3) arguments "pointers        char", hence following cast plus dereference */     return strcmp(* (char * const *) p1, * (char * const *) p2); } 

my question is, why there cast char * const *? why isn't const char ** (because want send const char * strcmp)?

char * const * indeed means pointer constant pointer chars. reason cast performed in code in question following:

p1 , p2 (non-const) pointers constant location. let's assume type of location const t.

now want cast p1 , p2 real types. know each element of array char *, therefore t = char *. const t constant pointer char, written char * const.

since p1 , p2 pointers elements of array, of type const t *, char * const *.

since function merely calls strcmp, in truth wouldn't have made difference if parameters cast char ** or const char ** or const char * const * or whatever.


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -