Kann jemand erklären, wie man in der C-Programmierung ein Element an ein Array anhängt?
Lesezeit: 3 Minuten
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
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
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
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
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 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.
Scott
Kurze Antwort ist: Du hast keine andere Wahl als:
arr[4] = 5;
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
13985400cookie-checkKann jemand erklären, wie man in der C-Programmierung ein Element an ein Array anhängt?yes
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