Учитывая следующий код:Сходства и различия между массивами и указателями через практический пример
#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;
}
следующие предупреждения получены при компиляции (i686-яблоко-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 **'
но, почему казнь ошибки происходят во втором PRINTF, тем временем он работает в первом PRINTF?
Более того, почему он получает тот же результат, если первый scanf заменен scanf ("% d", a);?
Спасибо очень много заранее