2014-10-06 7 views
7

Wenn ich eine Nummer an ein mit int initialisiertes Array anhängen möchte, wie kann ich das tun?Kann jemand erklären, wie man ein Element an ein Array in der C-Programmierung anfügt?

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

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

Ich bin an Python gewöhnt, und in Python gibt es eine Funktion namens list.append, die ein Element automatisch an die Liste anfügt. Existiert eine solche Funktion in C?

+1

Array-Größe sollte initialisiert werden, um dieses zusätzliche Element zu enthalten – chouaib

+2

Wenn Sie genügend Speicher haben, können Sie wie folgt anfügen 'arr [4] = 5' einfach – chouaib

+0

Eine Liste und ein Array sind sehr unterschiedliche Arten von Containern. Ein Array ist ein zusammenhängender Speicherblock. 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. – imreal

Antwort

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

EDIT: So wurde ich gebeten, zu erklären, was passiert:

Wenn Sie das tun

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

Sie ein Array mit 10 Elementen erstellen und zuweisen Werte für die ersten 4 Elemente des Arrays.

Denken Sie auch daran, dass arr beginnt bei Index arr[0] und bei Index endet arr[9] - 10 Elemente

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

nach, dass das Array enthält Müll Werte/Nullen, weil Sie keine anderen Werte

zugewiesen haben

Aber man könnte noch 6 weitere Werte zuweisen, so, wenn Sie tun

arr[4] = 5; 

Sie Legen Sie den Wert 5 auf das fünfte Element des Arrays.

Sie können dies tun, bis Sie Werte für den letzten Index der arr zuweisen, die arr[9] ist;

Sorry, wenn meine Erklärung abgehackt ist, aber ich war nie gut darin Dinge zu erklären.

+2

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. –

+0

Dies ist nicht die Art von anhängendem OP, auf die Bezug genommen wurde. Anhängen ist das Hinzufügen zum Ende des Arrays, ohne dessen Index zu verwenden. –

0

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

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

So etwas wie das vierte Element zu setzen, müssen Sie nicht Wahl aber arr[4] = 5. Es sollte jedoch in Ihrem Code fehlschlagen, da das Array nur für 4 Elemente zugeordnet ist.

+0

Das Array scheint als 'int arr [10] 'deklariert zu sein, was viel Platz bietet. –

+0

@GregHewgill: Ich bin offensichtlich blind. Vielen Dank. – Amadan

+1

Das vierte Element wäre 'arr [3]' nein? – Musa

1

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

+0

Danach Sie tun können. if (freePosition

Verwandte Themen