C言語:二次元配列
そーいえば、ガウスの消去法のMatrix構造体のメンバmといい、さっきのRGBといい、二次元配列を利用するってのは結構多い話でありまして・・・・
基本的に、double型二次元配列(N×N行列とか)なら
double **matrix;
ってダブルポインタを宣言しておいて
matrix = (double**)malloc(sizeof(double*) * N);
って各行の根元をつくっといて、その作った各根元に
for (i = 0;i < N;i++) matrix[i] = (double*)malloc(sizeof(double) * N);
と言う風にやって行をくっつけてやるんですが、他になんかいい方法は無いんでしょうかね
二次元配列みたいに使ってるけど、double matrix[N][N]とは違う訳だし
freeするときも結構面倒だし
一次元配列を無理やり二次元配列にキャストするってのも聞いたことあるけど、あれは良いんだろうか。あんまりよろしくないような気がするんだけど・・・・・
関数の引数に二次元配列を渡す時に問題が出てくるんじゃなかろうか
**matrixでつくった二次元配列だと”double **”型が引数になるけど、matrix[N][N]だと”double (*)[N]”型になるのかな?混乱してきたぞw
多分エラーが出るはず型が違う訳だし。いや、キャストすれば良いのか?
多分キャストしてもダメだね。進むアドレスが違う訳だし
こんど友達に聞いてみよう