Nun, Sie haben uns keine vollständige Implementierung gegeben. Ich nehme an, du meintest es.
%Vor%Hier ist eine andere Option:
%Vor%Dann simulieren Sie die Matrix mit
%Vor%für Reihenreihenfolge und
%Vor%für die Reihenfolge der Spalten.
Eine dieser beiden Optionen ist eigentlich der bevorzugte Weg, um eine Matrix in C zu behandeln. Dies liegt daran, dass die Matrix nun zusammenhängend im Speicher gespeichert wird und Sie von Fundstelle . Grundsätzlich wird der CPU-Cache viel glücklicher mit Ihnen sein.
Die anderen Antworten deckten bereits diese ab, aber der Vollständigkeit halber hat die comp.lang.c FAQ einen relevanten Eintrag:
Wie kann ich ein mehrdimensionales Array dynamisch zuweisen?
Was Sie tun können, ist
und dann diese neue Matrix als mat [i] [j]
verwendenSie können auch Calloc verwenden, das zusätzlich die Matrix für Sie initialisiert. Die Signatur ist etwas anders:
%Vor%Sie können es auf einen Aufruf von malloc reduzieren, aber wenn Sie einen 2d-Array-Stil verwenden möchten, brauchen Sie immer noch die for-Schleife.
%Vor%Ungetestet, aber Sie bekommen die Idee. Ansonsten würde ich bei dem bleiben, was Jason vorschlägt.
Für ein N-dimensionales Array können Sie dies tun:
%Vor%So greifen Sie auf eine Array-Zelle wie folgt zu:
%Vor%(Hinweis: Test jetzt nicht, aber sollte funktionieren. Übersetzt von meinem Matlab-Code, aber im Matlab-Index beginnt von 1, also habe ich einen Fehler gemacht (aber ich denke nicht))
Viel Spaß!