Dato il codice seguente:somiglianze e le differenze tra vettori e puntatori attraverso un esempio pratico
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[1];
int * b = malloc(sizeof(int));
/* 1 */
scanf("%d", &a);
printf("%d\n", a[0]);
/* 2 */
scanf("%d", &b);
printf("%d\n", b[0]);
return 0;
}
i seguenti avvisi si ottengono quando si compila (i686-apple-darwin9-gcc-4.0.1):
array.c: In function 'main':
array.c:9: warning: format '%d' expects type 'int *', but argument 2 has type 'int (*)[0u]'
array.c:14: warning: format '%d' expects type 'int *', but argument 2 has type 'int **'
ma, perché un'esecuzione errori si verificano nella seconda printf, nel frattempo lavora per la prima printf?
Ancor più, perché si ottiene lo stesso risultato, se la prima scanf è sostituito da scanf ("% d", a);?
Grazie molto in anticipo