「学習法」じゃなくて「攻略法」というのがミソです.ポインタを深く理解するよりも,とりあえずエラーなく使えるようにすることが目標です.ポインタを既に理解している人であっても,分かりやすくポインタ関連のコードを書けるのでおすすめです.
みなさんは恐らく「char *」くらいならいいですけど「char **」となると嫌ですよね.「char *[]」なんてのもわかりづらいですよね. みなさんは上の3つの違い分かりますか?
なぜ分かりにくいのか.それは,2段階のポインタとか,ポインタの配列とか,配列へのポインタとか,普段見慣れないものが出てくるからです.
そこで,僕おすすめの「typedef法」の登場です.
分かりにくい型はtypedefで分解していくことで,格段に分かりやすくなります.
typedef char * char_ptr; // char_ptrは「charへのポインタ」を表す型
typedef char char_array4[4]; // char_array4は「charの要素4の配列」を表す型
char_ptr *var1;
char_ptr var2[4];
char_array4 *var3;
var1はchar_ptrへのポインタ
var2はchar_ptrの配列
var3はchar_array4へのポインタ
こんな風に,普段使い慣れている1段階のポインタとか,1次元配列の形になれば分かりやすいですよね.