2017-09-16 66 views
-3

本質上,我正在學習C代碼,並在此刻爲一個任務,我必須在宇宙中創建一個三維空間,這個空間中的行星通過重力相互作用。在這一點上,我試圖使用向量P({1,2,3})設置向量A(bodies [i] .position),如下所示。儘管代碼運行時,它只將向量A的第一個值設置爲P的第一個值 - 其餘值保持爲0.通過引用將一個向量(數組)的值設置爲另一個向量(數組)的值

VectorSet的調用位於主函數中(與數組p一起),我只是把它放在這個格式,以方便。從指針算術

typedef struct { 
     double vector[VECTOR_DIM]; 
    } Vector; 

    typedef struct { 
     double mass; 
     Vector position; 
     Vector velocity; 
     Vector accel; 
     float colour[3]; 
    } Object; 

    p[VECTOR_DIM] = {1,2,3}; 
    VectorSet(&bodies[1].position, p); 

    void VectorSet(Vector *a, double vec[]) { 
     int i; 
     for (i = 0; i < VECTOR_DIM; i++) { 
      *(double *)(a + 8 * i) = *(double *)(vec + 8 * i); 
     } 
    } 
+0

我不明白,但你設定每8個雙用每8個值。 –

+0

C沒有矢量類型。它也不支持引用。指針不是參考。如果你真的**知道你需要他們,他們實際上做了什麼,就不要使用演員了! – Olaf

+0

我已經添加了其他信息,如果您能解釋我如何解決此問題,那將會有所幫助。 – Brayden

回答

0

取出8只留下i

+0

當我這樣做時,向量A的枚舉是0,1.87334e-306,1.62544e + 266 – Brayden

相關問題