Wie kann ich zwei Arrays in C verketten?

8

Wie verknüpfe ich zwei Arrays, um ein einzelnes Array mit den Elementen beider ursprünglichen Arrays zu erhalten?

    
quelle

1 Antwort

26

Arrays in C sind einfach ein zusammenhängender Speicherbereich mit einem Zeiger auf ihren Start *. Um sie zusammenzuführen, muss man also:

  1. Finden Sie die Länge der Arrays A und B (Sie müssen wahrscheinlich die Anzahl der Elemente und die sizeof jedes Elements kennen)
  2. Zuweisung ( malloc ) eines neuen Arrays C, das die Größe von A + B hat.
  3. Kopiere ( memcpy ) den Speicher von A nach C,
  4. Kopiere den Speicher von B nach C + die Länge von A (siehe 1).
  5. Vielleicht möchten Sie auch den Speicher von A und B freigeben ( free ).

Beachten Sie, dass dies eine teure Operation ist, aber dies ist die grundlegende Theorie. Wenn Sie eine Bibliothek verwenden, die eine gewisse Abstraktion bietet, sind Sie möglicherweise besser dran. Wenn A und B komplizierter sind als ein einfaches Array (z. B. sortierte Arrays), müssen Sie intelligenteres Kopieren als die Schritte 3 und 4 durchführen (siehe: wie füge ich zwei arrays mit unterschiedlichen werten in ein array ein ).

  • Obwohl für die Zwecke dieser Frage die Zeiger-Erklärung streng genommen genügt (und den Kommentator unten zu beruhigen): C hat das Konzept eines Arrays, das ohne die Syntax verwendet werden kann von Zeigern. Implementationsweise sind jedoch ein C-Array und ein zusammenhängender Speicherbereich mit einem Zeiger nah genug, dass sie austauschbar verwendet werden können und oft verwendet werden.
Chen Levy 08.11.2009 11:47
quelle

Tags und Links