2014-10-06 10 views
7

Se voglio aggiungere un numero a un array inizializzato su int, come posso farlo?Qualcuno può spiegare come aggiungere un elemento a un array nella programmazione C?

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

Desidero {0,5, 3, 64, 5} alla fine.

Sono abituato a Python e in Python esiste una funzione chiamata list.append che aggiunge automaticamente un elemento all'elenco. Esiste una tale funzione in C?

+1

la dimensione dell'array deve essere inizializzata per contenere questo elemento extra – chouaib

+2

se hai abbastanza memoria che puoi aggiungere come questo 'arr [4] = 5' semplicemente – chouaib

+0

Un elenco e un array sono tipi di contenitori molto diversi. Un array è un blocco contiguo di memoria e se si desidera aggiungere un elemento, è necessario scriverlo nella posizione che segue l'ultima posizione occupata, a condizione che l'array sia sufficientemente grande. – imreal

risposta

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

EDIT: Così mi è stato chiesto di spiegare cosa sta succedendo:

Quando si esegue

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

si crea un array con 10 elementi e di allocare i valori per i primi 4 elementi dell'array.

Anche tenere a mente che arr parte da indice arr[0] e termina in corrispondenza dell'indice arr[9] - 10 elementi

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

dopo che l'array contiene valori immondizia/zeri perché non è stato assegnato altri valori

Ma si potrebbe ancora assegnare più di 6 valori in modo che quando si fa

arr[4] = 5; 

un llocare il valore 5 al quinto elemento dell'array.

È possibile eseguire questa operazione fino ad allocare i valori per l'ultimo indice di arr ovvero arr[9];

Scusa se la mia spiegazione è incerta, ma non sono mai stata brava a spiegare le cose.

+2

Modifica la tua domanda per aggiungere una spiegazione su come funziona il tuo codice e come risolve il problema dell'OP. Molti poster su SO sono principianti e non capiranno il codice che hai pubblicato. –

+0

Questo non è il tipo di OP che stava facendo riferimento a. L'aggiunta è di aggiungere alla fine della matrice senza utilizzare il suo indice. –

0

Ci sono solo due modi per mettere un valore in un array, e uno è zucchero sintattico per l'altro:

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

Così, per mettere qualcosa come il 4 ° elemento, non si dispone di alcun scelta ma arr[4] = 5. Tuttavia, dovrebbe fallire nel codice, poiché l'array viene assegnato solo per 4 elementi.

+0

L'array sembra essere dichiarato come 'int arr [10] 'che fornisce molto spazio. –

+0

@GregHewgill: Sono cieco, a quanto pare. Grazie. – Amadan

+1

Il quarto elemento si troverebbe in "arr [3]' no? – Musa

1

È possibile avere un contatore (freePosition), che traccia il successivo posto libero in una matrice di dimensione n.

+0

Dopo questo tu può fare. if (freePosition

Problemi correlati