Ho una matrice che contiene una cronologia dei valori e quando aggiungo un nuovo valore, ho bisogno di spostare tutti i valori precedenti di una posizione a sinistra, di perdere il valore più vecchio e di fare spazio alla successiva.Il modo migliore per spostare un array in C?
Mi vengono in mente due modi per farlo, utilizzando memmove:
memmove(&arr[0], &arr[1], sizeof(arr) - sizeof(*arr));
oppure scambiando i puntatori:
for (i = 0; i != sizeof(arr) - 1; i++) {
*(arr + i) = *(arr + i + 1);
}
C'è una differenza di prestazioni tra i due metodi, e se no, quale sarebbe stato consigliato?
Avete considerato di non utilizzare un array per questo o non è un'opzione? – nic
@nic Ho bisogno di tenere traccia degli ultimi valori X, quindi non posso pensare a un modo più logico di memorizzarli tranne che per un array. – Muis
Utilizzare una coda (è comunque possibile utilizzare una matrice per implementarla) ed evitare la copia della memoria. http://www.thelearningpoint.net/computer-science/data-structures-queues--with-c-program-source-code –