#include <stdio.h>
int main(void) {
int a[5], *p, i;
p = a;
p = (int []){1, 2, 3, 4, 5};
for (i = 0; i < 5; i++, p++) {
printf("%d == %d\n", *p, a[i]);
}
return 0;
}
$ gcc -O -Wall -Wextra -pedantic -std=c99 -o test test.c; ./test
1 == -1344503075
2 == 32767
3 == 4195733
4 == 0
5 == 15774429
Печать массива с помощью арифметики указателей показывает, что это действительно имеет место целочисленного последовательность от 1 до 5, но печать еще раз, что, предположительно, тот же массив выражается через индексы дает неинициализированное дерьмо. Зачем?
Я понимаю, что это всего лишь демо-код, но никогда не пишите 'int a [5], * p, i;' в реальной жизни! –