zuteilen Matrix in C

8

Ich möchte eine Matrix zuweisen.

ist dies die einzige Option:

%Vor%     
Idan 24.01.2010, 20:43
quelle

7 Antworten

20

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.

    
jason 24.01.2010, 20:48
quelle
6

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?

    
jamesdlin 24.01.2010 21:15
quelle
3

Was Sie tun können, ist

%Vor%

und dann diese neue Matrix als mat [i] [j]

verwenden     
abhay jain 26.12.2012 10:36
quelle
2

Wie wäre es nur mit:

%Vor%     
Paul Betts 24.01.2010 20:47
quelle
2

Sie können auch Calloc verwenden, das zusätzlich die Matrix für Sie initialisiert. Die Signatur ist etwas anders:

%Vor%     
Stéphan Kochen 24.01.2010 20:51
quelle
0

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.

    
Matthew Scharley 24.01.2010 20:53
quelle
-1

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ß!

    
George 24.01.2010 21:13
quelle

Tags und Links