アカウント名:
パスワード:
俺の三重ポインタが火を噴く時が来たようだな……
#引き継いだソースにあってキレそうになった
良く"ポインタのポインタ"で混乱している人がいるけどtypedef 使えば理解もコーディングも楽になりますよ.
こんな感じです.
typedef int T;typedef T* PT; // "int" のポインタtypedef PT* PPT; // "intのポインタ" のポインタtypedef PPT* PPPT; // "intのポインタのポインタ" のポインタ
変数宣言時はこんな感じ
T t = 1; PT pt = &t; PPT ppt = &pt; PPPT pppt = &ppt;
関数の引数で3重ポインタ(?)を使う場合はこんな感じ.
void hogehoge( PPP
「P」を「*」と脳内変換しながら読まないといけない分だけ、よけいに分かりにくくなっています。
確かに意味がないですよね。どうせなら、
typedef int T;typedef T* PT; // "int" のポインタtypedef PT* ARR_PT; // "intのポインタ" の配列typedef ARR_PT* ARR_ARR_PT; // "intのポインタの配列" の配列
とやってもらった方が、配列の先頭のポインタなのか、要素のポインタなのかが判別しやすい。前者ならARR_ARR_PT、後者ならARR_PT*と宣言することで、一目瞭然。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
関数の引数に (スコア:0)
俺の三重ポインタが火を噴く時が来たようだな……
#引き継いだソースにあってキレそうになった
Re: (スコア:2)
良く"ポインタのポインタ"で混乱している人がいるけど
typedef 使えば理解もコーディングも楽になりますよ.
こんな感じです.
typedef int T;
typedef T* PT; // "int" のポインタ
typedef PT* PPT; // "intのポインタ" のポインタ
typedef PPT* PPPT; // "intのポインタのポインタ" のポインタ
変数宣言時はこんな感じ
T t = 1;
PT pt = &t;
PPT ppt = &pt;
PPPT pppt = &ppt;
関数の引数で3重ポインタ(?)を使う場合はこんな感じ.
void hogehoge( PPP
Re:関数の引数に (スコア:0)
「P」を「*」と脳内変換しながら読まないといけない分だけ、よけいに分かりにくくなっています。
Re: (スコア:0)
確かに意味がないですよね。どうせなら、
とやってもらった方が、配列の先頭のポインタなのか、要素のポインタなのかが判別しやすい。前者ならARR_ARR_PT、後者ならARR_PT*と宣言することで、一目瞭然。