Qualcuno potrebbe spiegarmi l'istruzione dove ho messo i punti di domanda? Se while (val ?= -1) mi permette di bloccare il ciclo digitando -1, allora non capisco a cosa serve l'istruzione v[size-1]=val. Modificando in entrambe le istruzioni -1 con -2 ,il ciclo non dovrebbe avere lo stesso output ma bloccarsi con -2? Infine non mi è' chiara la differenza tra mallocdebug e realloc.. nel mio libro di testo e' stato dato come esercizio chiarificatore sulla malloc la " costruzione "di una qualsiasi matrice dinamica. L'esercizio l'ho svolto e funziona perfettamente ma a questo punto non capisco il motivo per cui in questo esempio non poteva essere usata l'istruzione malloc per allocare la variabile sizeof. Per sizeof infatti , tanto quando oer una matrice dinamica , variabile dim , io non so a priori lo spazio che sarà necessaria allocare.. Grazie mille a tutti coloro che avranno la pazienza di rispondere alle mie domande
codice:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *v=NULL ;
int i, val;
int size = 0;
do {
printf ( "Inserire un nuovo elemento nell'array :");
scanf ("%d", &val);
v = (int*) realloc( v, (++size)*(sizeof(int)) );
v[size-1] = val; // ?????????????????????
} while (val != -1);
printf( "Elementi nell'array:");
for ( i=0; i < size; i++ )
printf ("%d ", v[i]);
free(v);
return 0; }