2d Array gegen Struktur eines Arrays

8

Ich bin neu in der C-Sprache, daher entspricht meine Frage möglicherweise nicht den hohen Standards

können wir

verwenden %Vor%

statt

%Vor%

Was ist der Unterschied? und welches ist effizienter?

    
theoneabhinav 20.10.2013, 18:05
quelle

3 Antworten

1

Sie sollten dem Compiler damit vertrauen. Ich kann jedoch zwei Alternativen vorschlagen, von denen ich weiß, dass sie je nach Anwendung gut funktionieren.

1) Verwenden Sie int a [10] [10], stellen Sie jedoch sicher, dass Sie beim Schleifen in der richtigen Reihenfolge darauf zugreifen. Der Compiler wird "unterhalb" eine einzelne Array-Struktur verwenden, die in der Reihenfolge beginnt

%Vor%

vs

%Vor%

unterscheidet sich in Bezug auf die Leistung. Das Spätere ist leistungsfähiger.

2) Die Option 1 erfordert besondere Sorgfalt und ist kontraintuitiv. Ich bevorzuge es lieber

%Vor%

und machen

%Vor%

wo die Funktion inline deklariert werden sollte und das was du getan haben musst. Wenn Sie die Funktion vermeiden können, ist es noch besser. Zum Beispiel, wenn es eine Summe ist, ändert es nichts 2d oder Vektor.

EDIT: Hier ist eine Referenz, die in den Details das Bit über die Array-Reihenfolge erklärt: Ссылка

    
Sebastien 20.10.2013, 18:16
quelle
2

Sie hätten m[x].a[y] , was eine kompliziertere Syntax als m[x][y] ist, aber lexikalisch nichts hinzufügt

    
Alexander Kulyakhtin 20.10.2013 18:08
quelle
1

Nein. Dies ist eine Struktur, die ein Array enthält.

%Vor%

Sie können ein Array von struct definieren:

%Vor%

Um es in einem Schritt zu tun:

%Vor%

Beachten Sie, dass Sie ein zusätzliches Semikolon vor m [10] haben, was keine korrekte Syntax ist.

Um auf ein Element in arr zuzugreifen, verwenden Sie m[i].a[j]

Dies entspricht nicht der Syntax eines 2d-Arrays wie:

%Vor%

, auf die Sie mit mat[i][j]

zugreifen können     
Jerry 20.10.2013 18:09
quelle

Tags und Links