Dado el siguiente código:similitudes y diferencias entre las matrices y los punteros a través de un ejemplo práctico
#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;
}
las siguientes advertencias se obtienen cuando se compila (i686-manzana-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 **'
pero, ¿por qué se produce una ejecución de error en el segundo printf, por su parte funciona por primera printf?
Aún más, por lo que se obtiene el mismo resultado si la primera scanf está sustituido por scanf ("% d", a);?
gracias mucho por adelantado