###mallocで領域確保した際、実際メモリ上ではどのような状態になっているのか曖昧です
typedef struct box { int num; struct box*array[5]; }BOX; BOX*data = (BOX*)malloc(sizeof(BOX)); for(int i = 0; i<5; ++i) { data->array[ i ] = (BOX*)malloc(sizeof(BOX)*3); }
この時、
data->array[n][m]
(n = 0〜4, m = 0〜2)
のように2次元配列の座標として扱えるのか、もしくは
data->array[n]->array[m]
(n=0〜4、m=0〜2)
のように、ポインタのポインタとして扱えるのかどうか....
###試してみたこと
BOX value; BOX*pointer; //↑の2つを用意して、 data->array[n][m] = value; //① data->array[n]->array[m] = pointer; //② //(n,mはそれぞれ0〜4、0〜2までの任意の数字) //このように2つの場合を想定して、①には値を、②にはポインタを代入してみた
上記の①と②を実行すると、何のエラーもなく正常に動きました。
ただ、それだとdata->array
は①,②の両方を実現できてしまっているという事になります。
しかし実際のところ、どちらか一方が正しく、もう一方は間違った認識だと思うのですが、どうなのでしょうか(^_^*)
回答1件
あなたの回答
tips
プレビュー