2009-06-28 25 views

Antwort

1

Übergeben Sie den Zeiger an das erste Element in der Matrix und die Größe.

2

Da Sie zu wissen scheinen, dass die Matrizen von konstanter Größe sind, ist die Aufgabe so einfach wie das Übergeben eines Doppelzeigers (char** hier) an die Funktion, die sich auf die übergebene Matrix bezieht.

Sie müssen die Dimensionen übergeben, wenn die Zeilen/Spalten der übergebenen Matrix unbekannt sind, da C jedoch nicht die Größe von Arrays im Speicher verfolgt (sie sind nicht mehr als Zeiger mit syntaktischem Zucker).

+0

Dies setzt voraus, dass seine Matrix als ein Array von Zeigern zu Arrays bezeichnet wird, während Chancen, dass er nur eine regelmäßige zusammenhängende 2-D-Array hat – newacct

3

Sie können den Inhalt der Matrix in die memcpy-Funktion kopieren.

/* 
* mat: matrix to duplicate. 
* rows: rows in mat. 
* cols: cols in mat. 
*/ 
void matdup(char mat[][],size_t rows,size_t cols){ 

    char dupmat[rows][cols];//duplicate matrix in stack. 

    memcpy((void*)dupmat,(void*)mat,rows*cols); 

    //do stuff with matrix here. 
} 

Mit diesem können Sie eine neue Matrix innerhalb der matdup Funktion zu verwenden.

+1

+1; Es ist jedoch nicht notwendig, auf 'void *' zu werfen – Christoph

Verwandte Themen