Arraybehandlung in C
-
Hallo,
ich benutze sonst immer Vectoren in C++, jetzt muss ich aber mit "normalen" Arrays in C auskommen. Ich muss wissen, wie ich einen Array-Auschnitt bekommen kann.
Bsp:
int x[] = {0,1, ,99, 2, 3, 4, 5, 7};
int y[] = x[2:5] // hier soll also herauskommen y[] == {99, 2, 3, 4}
oder auch eine abfrage wie x[2,3] also nehmen 2 Elemente beginnend an Pos. 2gibt es sowas in C?!? Ich möchte eine umständliche for-Schleife umgehen...
thx4help
-
Sowas geht mit memcpy:
memcpy(zielarray, startarray + startindex, sizeof(arrayelement) * anzahl);
EDIT: Man rechnet hier halt direkt mit Adressen. Dafür hilft einem die Zeigerarithmetik von C soweit dass startarray + startindex die Elementgröße selbst berücksichtigt.
-
erstmal danke für die Antwort, ich werde es ausprobieren.
Irgendwie ist aber schon heftig umständlich...
-
int *y = x+2
-
SG1 schrieb:
int *y = x+2
Das ist dann aber [2,oo[ und nicht [2,5]
-
Die Groesse des Arrays muss der Programmierer eh kennen, also ist der Unterschied irrelevant.
-
Nicht ganz, denn der OP wollte einen Array slicen, keinen Zeiger auf ein Element irgendwo in der Mitte erhalten