Anfängerfrage: Array einem anderen Array zuweisen
-
Komme von etwas höheren Programmiersprachen und hab grad etwas verwundert festgestellt, dass das in c nicht geht.
Ich will ein Array mit 5 Feldern einem Array mit 10 Feldern zuweisen, vorzugsweise so, dass dann die ersten 5 Felder belegt sind, und die anderen 5 noch frei.Wie geht das? (Mit Zeigern irgendwie?)
-
Du kannst das Ding einfach byteweise kopieren, also einfach memcpy benutzten:
int array1[5]; int array2[10]; memcpy(array2, array1, sizeof(*array1) * 5);
-
es geht auch
memcpy(array2, array1, sizeof(array1));
-
warum nicht so?
int array1[5], array2[10], i; for (i = 0; i < 5; i++) array2[i] = array1[i];
-
so gehts natürlich auch. allerdings sind c-programmierer grundsätzlich schreibfaul
-
@Konfusius
Geht natürlich auch, aber hier fehlt mir die stelle wo ich die Anzahl der zu kopierenden elemente beeinflussen kann. Ist aber natürlich auch ein Vorteil daran;)@icepacker
Ist mit sicherheit die lesbarste Variante, aber etwas langsamer.Wie wärs damit?
#define COPYARRAY(dest, src) memcpy((dest), (src), sizeof((src))) #define COPYARRAYEX(dest, startd, src, starts, count) memcpy(&(dest)[startd], &(src)[starts], sizeof(*(src)) * (count))
:xmas1: