Kann jemand erklären, wie man in der C-Programmierung ein Element an ein Array anhängt?

Lesezeit: 3 Minuten

Benutzeravatar von user3326078
Benutzer3326078

Wie kann ich das tun, wenn ich eine Zahl an ein mit int initialisiertes Array anhängen möchte?

int arr[10] = {0, 5, 3, 64};
arr[] += 5; //Is this it?, it's not working for me...

Ich möchte am Ende {0,5, 3, 64, 5}.

Ich bin an Python gewöhnt, und in Python gibt es eine Funktion namens list.append, die automatisch für Sie ein Element an die Liste anhängt. Gibt es eine solche Funktion in C?

  • Die Array-Größe sollte so initialisiert werden, dass sie dieses zusätzliche Element enthält

    – Chouaib

    6. Oktober 2014 um 0:56 Uhr

  • Wenn Sie genug Speicher haben, können Sie so anhängen arr[4] = 5 einfach

    – Chouaib

    6. Oktober 2014 um 0:58 Uhr

  • Eine Liste und ein Array sind sehr unterschiedliche Arten von Containern. Ein Array ist ein zusammenhängender Speicherblock, und wenn Sie ein Element anhängen möchten, müssen Sie es an die Position schreiben, die der letzten belegten Position folgt, sofern das Array groß genug ist.

    – Ich bin echt

    6. Oktober 2014 um 0:59 Uhr

  • Beabsichtigen Sie, ein Array zu verwenden, das wächst, wenn Sie zusätzliche Elemente anhängen? In C++ könnten Sie verwenden std::vector aber C bietet so etwas nicht an. Sie müssten zusätzlichen Speicher manuell zuweisen.

    – Daniel Ebert

    6. Oktober 2014 um 7:12 Uhr

Benutzeravatar von bitcell
Bitzelle

int arr[10] = {0, 5, 3, 64};
arr[4] = 5;

BEARBEITEN:
Also wurde ich gebeten, zu erklären, was passiert, wenn Sie Folgendes tun:

int arr[10] = {0, 5, 3, 64};

Sie erstellen ein Array mit 10 Elementen und weisen den ersten 4 Elementen des Arrays Werte zu.

Denken Sie auch daran arr beginnt beim Index arr[0] und endet bei index arr[9] – 10 Elemente

arr[0] has value 0;
arr[1] has value 5;
arr[2] has value 3;
arr[3] has value 64;

Danach enthält das Array Müllwerte / Nullen, weil Sie keine anderen Werte zugewiesen haben

Aber Sie könnten immer noch 6 weitere Werte zuweisen, wenn Sie dies tun

arr[4] = 5;

Sie weisen dem fünften Element des Arrays den Wert 5 zu.

Sie könnten dies tun, bis Sie Werte für den letzten Index von zuweisen arr das ist arr[9];

Tut mir leid, wenn meine Erklärung abgehackt ist, aber ich war noch nie gut darin, Dinge zu erklären.

  • Bitte bearbeiten Sie Ihre Frage, um eine Erklärung hinzuzufügen, wie Ihr Code funktioniert und wie er das Problem des OP löst. Viele Poster auf SO sind Neulinge und werden den von Ihnen geposteten Code nicht verstehen.

    – Ich habe Alien alarmiert

    6. Oktober 2014 um 9:04 Uhr

  • Dies ist nicht die Art des Anhängens von OP, auf die sich bezogen wurde. Anhängen bedeutet, am Ende des Arrays hinzuzufügen, ohne seinen Index zu verwenden.

    – Hedylove

    26. Januar 2018 um 2:56 Uhr

  • Diese Antwort wird als richtig ausgewählt, ist aber eigentlich nicht richtig. Oder wurde diese Frage nach einer Weile bearbeitet, sodass die Antwort unangemessen aussieht?

    – Scott

    3. April 2020 um 6:55 Uhr

  • Könnten Sie arr verwenden[sizeof(arr)+1] = 5;

    – James Ashwood

    10. Juli 2020 um 12:51 Uhr

Benutzeravatar von Amadan
Amadan

Es gibt nur zwei Möglichkeiten, einen Wert in ein Array zu schreiben, und die eine ist nur syntaktischer Zucker für die andere:

a[i] = v;
*(a+i) = v;

Um also etwas als Element auf Index 4 zu setzen, haben Sie keine andere Wahl als arr[4] = 5.

  • Das Array scheint als deklariert zu sein int arr[10] der viel Platz bietet.

    – Greg Hewgill

    6. Oktober 2014 um 1:02 Uhr

  • @GregHewgill: Ich bin anscheinend blind. Vielen Dank.

    – Amadan

    6. Oktober 2014 um 1:03 Uhr

  • Das 4. Element wäre bei arr[3] nein?

    – Musa

    6. Oktober 2014 um 1:06 Uhr

  • @Musa: Ich zähle ab 0 🙂

    – Amadan

    6. Oktober 2014 um 1:07 Uhr


  • Während ich verstehe, was Sie mit “4.” in Bezug auf 0., 1., 2., 3., 4. – den Wortlaut meinen ist etwas irreführend…

    – Polarsekt

    6. Oktober 2014 um 1:41 Uhr


Benutzeravatar von Arjun Prasad
Arjun Prasad

Sie können einen Zähler (freePosition) haben, der den nächsten freien Platz in einem Array der Größe n verfolgt.

  • Danach können Sie tun. if(freiePosition

    – Arjun Prasad

    6. Oktober 2014 um 6:35 Uhr

Benutzeravatar von thecow milk
die Kuhmilch

Für einige Leute, die diese Frage möglicherweise immer noch sehen, gibt es eine andere Möglichkeit, wie Sie ein oder mehrere andere Array-Elemente in C anhängen können. Sie können auf verweisen Dies blog, der einen C-Code zeigt, wie Sie ein weiteres Element in Ihrem anhängen array.

Kann man aber auch verwenden memcpy() Funktion, um Elemente eines anderen Arrays anzuhängen. Sie können verwenden memcpy()so was:

#include <stdio.h>
#include <string.h>

int main(void)
{

int first_array[10] = {45, 2, 48, 3, 6};
int scnd_array[] = {8, 14, 69, 23, 5};
int i;

// 5 is the number of the elements which are going to be appended
memcpy(first_array + 5, scnd_array, 5 * sizeof(int));

// loop through and print all the array
for (i = 0; i < 10; i++) {
    printf("%d\n", a[i]);
  }

}

Vignesh kannas Benutzeravatar
Vignesh kanna

Wenn Sie einen Code wie z
int arr[10] = {0, 5, 3, 64}; und Sie möchten einen Wert an den nächsten Index anhängen oder hinzufügen, können Sie ihn einfach durch Eingabe hinzufügen a[5] = 5.

Der Hauptvorteil dieser Vorgehensweise besteht darin, dass Sie einen Wert zu einem beliebigen Index hinzufügen oder anhängen können, der nicht fortgesetzt werden muss, z. B. wenn ich den Wert anhängen möchte 8 bis Index 9 kann ich es nach obigem Konzept vor dem Auffüllen vor Indizes machen. Aber in Python mit list.append() Sie können dies durch fortgesetzte Indizes tun.

Scotts Benutzeravatar
Scott

Kurze Antwort ist: Du hast keine andere Wahl als:

arr[4] = 5;

Benutzeravatar von ashutro
ashutro

void Append(int arr[],int n,int ele){
    int size = n+1; // increasing the size
    int arrnew[size]; // Creating the new array:

    for(int i = 0; i<size;i++){
        arrnew[i] = arr[i]; // copy the element old array to new array:

    }
    arrnew[n] = ele; // Appending the element:
}


by above simple method you can append the value 

  • Ihre Antwort ist falsch, da Sie ein temporäres Array int arrnew zuweisen[size] innerhalb Ihrer Funktion und legen Sie einen zusätzlichen Wert in diesem Array fest. Wenn die Funktion beendet wird, ist arrnew nicht mehr gültig. Bitte lesen Sie eine andere Antwort für eine gültige Antwort und lesen Sie über Bereichsvariablen, Heap- und Stack-Zuweisung (malloc usw.), dies wird Ihnen helfen, eine bessere Speicherverwaltung zu verstehen

    – Martin

    7. März um 16:02 Uhr

1398540cookie-checkKann jemand erklären, wie man in der C-Programmierung ein Element an ein Array anhängt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy