È necessario allocare un blocco di memoria e utilizzarlo come un array come:
int *arr = malloc (sizeof (int) * n); /* n is the length of the array */
int i;
for (i=0; i<n; i++)
{
arr[i] = 0;
}
Se è necessario inizializzare l'array con zeri, è anche possibile utilizzare la funzione memset
da stdlib.
memset (arr, 0, sizeof (int) * n);
Qui 0
è la costante con cui verrà fissato ogni locatoin della matrice. Si noti che l'ultimo argomento è il numero di byte da impostare come costante. Poiché ogni posizione dell'array memorizza un numero intero, è necessario passare il numero totale di byte come parametro.
Inoltre, se si desidera azzerare la matrice su zeri, è possibile utilizzare calloc
anziché malloc
. calloc
restituirà il blocco di memoria dopo aver impostato le posizioni di byte allocate su zero.
Al termine, liberare il blocco di memoria free (arr)
.
EDIT1
Si noti che se si desidera assegnare un particolare numero intero in posizioni di un array di interi utilizzando memset
allora sarà un problema. Questo perché memset
interpreterà l'array come una matrice di byte e assegnerà il byte che hai assegnato a ogni byte dell'array. Quindi se vuoi memorizzare dire 11243 in ogni posizione, allora non sarà possibile.
EDIT2
noti inoltre perché ogni modificando un array int a 0 con memset
tempo non può funzionare: Why does "memset(arr, -1, sizeof(arr)/sizeof(int))" not clear an integer array to -1? come sottolinea @Shafik Yaghmour
avete fatto significa 'p [x] = x;' invece di 'p [x] = 0;'? – Mysticial
Il secondo metodo è il modo corretto. Il primo ha un errore del compilatore, vero? – Barmar
http://fydo.net/gamedev/dynamic-arrays mostra come utilizzare gli array dinamici. infatti è un link molto popolare e puoi trovarlo con qualsiasi motore di ricerca principale ... – franklin