Gibt es eine einfache Möglichkeit, eine Spalte in einem 2-D-Array als separate 1-D-Array in plain alten C (nicht C++ oder C#) zu referenzieren? Es ist einfach, dies für eine Zeile zu tun. Asssume Ich habe 2 Funktionen:Referenzieren Sie eine 2-D Array-Spalte in C?
double doSomethingWithARow(double theRow[3]);
double doSomethingWithACol(double theCol[100]);
Dann könnte ich die erste wie folgt verwenden:
double matrix[100][3];
double result;
// pass a single row to a function as an array
// this essentially passes the 3-element array at row 48 to the function
for(int i=0; i < 100; i++)
{
result = doSomethingWithARow(matrix[i]);
}
Was ich es einen Weg wollen einfach eine Spalte zugreifen.
Das einzige, was ich bis jetzt gefunden habe, ist die Matrix zu transformieren, um die Zeilen mit den Spalten zu tauschen. Aber dieser Code soll hinsichtlich Speicher und Geschwindigkeit so effizient wie möglich sein. Mit all den verschlungenen Wegen, auf Zeiger in C zu verweisen, scheint es, als sollte es einen Weg geben, dies zu tun.
Ihre Funktionen verwenden Referenzen, während das ursprüngliche Poster C angegeben hat Abgesehen davon ist es eine gute Lösung, wenn Sie verzweifelt vermeiden, einen Container zu verwenden. –
@Andrew Grant: Guter Punkt, ich habe es in Zeiger geändert. –
+1, weil dieser Code meiner Lösung vorzuziehen ist, wenn die Dimensionen der im Programm verwendeten Arrays festgelegt sind. – Stephan202