2013-03-07 22 views
0

我已經從main()傳遞的值,以該函數method()一個問題的麻煩。 我有「選擇」,它的被填充在其他函數調用version()變量; selected是一個二維矩陣。我然後將這些值一個叫check維矩陣:我有傳遞數組從主到一個特定的功能

check[1]=selected[1][1] 
check[2]=selected[1][2] 
. 
. 
. 
check[190]=selected[19][10]. 

然後我需要使用矢量「檢查」的功能method(),這是我的問題...我不能正確地傳遞它...

int main() 
{ 
    double **selected; 
    version(&selected); 

    double *check; 
    check=dvector(n*T); 

    for(v=1;v<=n;v++) { 
    for(t=1;t<=T;t++){ 
     check[v]=selected[v][t]; 
    } 
    } 

    method(check); 

} 

void version(selected) 
double ***selected; 
{ 
    *selected=dmatrix(n,T,1,1); 
    . 
    . 
    . 
    for(v=1;v<=n;v++) { 
    for(t=1;t<=T;t++){ 
     (*selected)[v][t]=xd[v][point[v][t]]; 
    } 
    } 
} 

void method(check) 
double *check; 
{ 

    for(v=1;v<=n;v++) { 
    for(t=1;t<=T;t++){ 
     printf("check[%u]=%f\n",v,check[v]); 
    } 
    } 
} 

我很欣賞你的任何反饋!

+3

什麼語言是什麼?我不認爲它會以我認識的任何語言編譯(或解釋)。 – 2013-03-07 13:47:08

+0

你覆蓋檢查[v] T次。 – QuentinUK 2013-03-07 13:52:28

+0

@IvayloStrandjev對不起,我忘了提!它是一種c語言。你說得對,這不能編譯,因爲我沒有顯示完整的代碼,我認爲這可能是足夠的信息來證明我的問題。 – user2080190 2013-03-08 06:29:08

回答

0
check=dvector(n*T); 

    for(v=1;v<=n;v++) { 
    for(t=1;t<=T;t++){ 
     check[v]=selected[v][t]; 
    } 
    } 

這裏檢查具有長度爲n * T,但後來v是從1到n所以只檢查的第n個元素得到一個值,所有其他是不確定的。對於零偏移陣列在V將由V * T + T被正確地替換,但這裏用的1偏移是(V-1)* T +(T-1)+1: -

 check[v*T-T+t]=selected[v][t]; 
+0

Thanks @QuentinUK – user2080190 2013-03-09 16:56:06

0

當通過一個數組來運行,沒有必要給&。數組始終作爲參考傳遞。 marsversions(selected);

+0

謝謝@Vishal Vijay – user2080190 2013-03-09 16:56:24

+0

它解決了你的問題嗎 – 2013-03-10 02:14:31

相關問題