intの配列へのポインタを持ち、j + 1からj + 3までのセルに初期座標値を宣言します。 jの反復はオブジェクトの単なる単なるものです。 j + 4からj + 6までのセルでは、次のステップでオブジェクトを移動する必要があるため、速度ベクトル値x、y、zを割り当てます。 YおよびZは、より興味深い何が0に等しいままYおよびZ速度ベクトルが0に等しく - 私はポインタのみx値が増大するのarithemticでX、Y、Z COORDSを増加させる試みが後C - 1つのポインタ座標だけが加算され、残りは0に等しくなります。
int * objects = (int *)malloc(amount_of_objects * 7 * sizeof(int));
if (x_vector != 0 || y_vector != 0 || z_vector != 0) {
for (int j = 0; j < amount_of_objects; ++j) {
*(objects + (j * 4)) = j;
*(objects + (j * 4 + 1)) = x_start;
*(objects + (j * 4 + 2)) = y_start;
*(objects + (j * 4 + 3)) = z_start;
*(objects + (j * 4 + 4)) = x_vector;
*(objects + (j * 4 + 5)) = y_vector;
*(objects + (j * 4 + 6)) = z_vector;
}`
どういうわけか。
for (int k = 0; k < current_amount_of_objects; ++k) {
*(objects + k * 7 + 1) += *(objects + k * 7 + 4);
*(objects + k * 7 + 2) += *(objects + k * 7 + 5);
*(objects + k * 7 + 3) += *(objects + k * 7 + 6);
}`
どうしてですか?ポインタでsthを止めていますか?何か提案してください?
コードを '*(objects +(j * 7 + 0)) 'と対称にすることもできます。最適化されていないコンパイラであっても、ゼロは加算されません。 –
配列表記法を使用すると、あまり混乱はありません。 –