2016-05-14 6 views
0

Ich habe eine M-mal-N mehrdimensionales Array und eine M-mal-N Größe eindimensionales Array dann, wenn M = N.Zuweisen Array mehrdimensionales Array und VizeVers

for (i = 0; i < M; i++) { 
    for (j = 0; j < N; j++) { 
     arr2d[i][j] = arrd1d[i * M + j]; 
    } 
} 

zu funktionieren scheint, aber Ich kann nichts für den allgemeinen Fall herausfinden.

+1

Haben Sie versucht, zu ändern 'i * M' auf' i N' *? – linuxfever

+0

Der einzige Unterschied wäre, dass es in Zeilenreihenfolge statt Spaltenreihenfolge zugewiesen würde. – user3255596

+1

Wie haben Sie die beiden Arrays deklariert? – ilent2

Antwort

2

Nur damit wir eine offizielle Antwort haben können, versuchen Sie, auf ein Element aus dem 1d-Array zuzugreifen, das seinen Bereich überschritten hat. Der Wechsel von i*M zu i*N löst das Problem.

0

ändern

arr2d[i][j] = arrd1d[i * M + j]; 

zu

arr2d[i][j] = arrd1d[i * N + j];