Wie man 2D-Array (Matrix) in einer Funktion in C übergibt?
Ich tun müssen, um diese zu bestehen Operationen auf der matrix als auch. Heißt das, es muss per Referenz übergeben werden?
Wird dies ausreichen?
void operate_on_matrix(char matrix[][20]);
InformationsquelleAutor der Frage Shweta | 2010-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
C nicht wirklich multi-dimensional arrays, aber es gibt mehrere Möglichkeiten, um zu simulieren. Der Weg zu passieren solche arrays an eine Funktion hängt von der Art und Weise simuliert, in der mehrere Dimensionen:
1) Verwenden Sie ein array von arrays. Dies kann nur verwendet werden, wenn der array-Grenzen sind bestimmt voll zur compile-Zeit, oder wenn Ihr compiler unterstützt VLA ist:
2) Verwenden Sie eine (dynamisch zugewiesene) array von Pointern, die (dynamisch vergebene) arrays. Dies wird meistens benutzt, wenn die array-Grenzen sind erst zur Laufzeit bekannt.
3) Verwenden Sie ein 1-dimensionales array und Korrektur der Indizes. Dies kann verwendet werden, sowohl statisch zugewiesen (Feste Größe) und auch mit dynamisch zugewiesenen arrays:
InformationsquelleAutor der Antwort Bart van Ingen Schenau
Ich weiß nicht, was du meinst mit "Daten-dont get lost". Hier ist, wie Sie an einem normalen 2D-array an eine Funktion:
InformationsquelleAutor der Antwort casablanca
Wenn Ihr compiler nicht unterstützt VLAs, Sie können es auf einfache Weise, indem Sie die 2d-array als int* mit row und col.
In der empfangenden Funktion regenerieren den 1d-array-index von 2d-array-Indizes.
InformationsquelleAutor der Antwort Rajneesh Gupta
InformationsquelleAutor der Antwort Casper Ghost