こんにちは。
次のコードはプログラムの1部を抜粋したものです。
c
1static void transform(double v2[], double m[][4], double v1[]) { 2 int j; 3 4 for (j = 0; j < 4; ++j) 5 { 6 v2[j] = m[j][0] * v1[0] 7 + m[j][1] * v1[1] 8 + m[j][2] * v1[2] 9 + m[j][3] * v1[3]; 10 } 11} 12 13static void project(double t[][4], double m[][4], double v[][4], int n) { 14 int k; 15 for (k = 0; k < n; ++k) { 16 transform(t[k], m, v[k]); 17 } 18}
関数projectから関数transformを呼び出した時に、projectにあるように、transformの実引数の第一引数にt[]を指定しているのですが、仮引数のv2[]がそのままt[]に取って代わるのでしょうか?
transformのfor文のv2[]もt[]に取って代わるのでしょうか?
実行すると、v2[]ではなくt[]に値が入っていたので、不思議に思いました。つまり、
c
1v2[j] = m[j][0] * v1[0] 2 + m[j][1] * v1[1] 3 + m[j][2] * v1[2] 4 + m[j][3] * v1[3];
ではなく、
c
1t[j] = m[j][0] * v[0] 2 + m[j][1] * v[1] 3 + m[j][2] * v[2] 4 + m[j][3] * v[3];
と処理されて、tに値が入っていました。
戻り値がある関数をよく扱うせいなのか分かりませんが、不思議に思いました。
回答2件
あなたの回答
tips
プレビュー