#include<stdio.h>
int main()
{
char *c[] = {"ENTER","NEW","POINT","FIRST"};
char**cp[] = {c+3,c+2,c+1,c};
char***cpp = cp;
printf("%s\n", **++cpp);
printf("%s\n", *--*++cpp+3);
printf("%s\n", *cpp[-2]+3);
printf("%s\n", cpp[-1][-1]+1);
return 0;
}
このアイデアを説明するための簡単な図を次に示します。
ここ:
c は文字ポインタの配列で、格納される型は char* 型の要素の最初の文字のアドレスです。
cp も文字ポインタの配列です。格納型は 2 次ポインタ char** 型の要素です。各要素に格納される内容はアドレスです。スペースを指す内容は c 配列要素のアドレスです。
cpp は 3 レベルのポインタ変数で、型は char*** で、cp のアドレスが格納されます。
分析します:
分析を要約すると、取得したコードを実行します。
上記はあくまで参考用です