つまり、という意味のようa pointer to a constant pointer to char
です。それはchar * const
、これまでのところ良いことを指しているということです。
私を混乱させるのは、それがどこでどのように使用されているのかです。私はのマニュアルページを見ていましたがqsort
、例では、ポインタをchar **
(文字列の配列)の要素に変換し、(として表示される要素へconst void *
のポインタ)を次のアドレスにフィード可能な通常のcharポインタに変換しstrcmp
ます。
static int
cmpstringp(const void *p1, const void *p2)
{
/* The actual arguments to this function are "pointers to
pointers to char", but strcmp(3) arguments are "pointers
to char", hence the following cast plus dereference */
return strcmp(* (char * const *) p1, * (char * const *) p2);
}
私の質問は、なぜキャストがあるのchar * const *
ですか?なぜそれは(最終的にはに送信したいので)だけではないのですconst char **
か?const char *
strcmp