Код: Выделить всё
#include <stdio.h>
int arr[0];
int main()
{
printf("%zd %p %i %i \n", sizeof(arr[0]), arr, arr[0], *arr);
return 0;
}
4 0x55e466a56014 0 0
Суть вопроса. Инициализируем статический массив размером 0(ноль элементов). Потом выводим получившееся и наблюдаем, что:
1. размер массива с нулем элементов равен 4 байтам (как так?);
2. адрес в памяти начала массива (это понятно, указатель задали, значит указывает вроде на что-то, но на что?? Массив же на ноль элементов..);
3. значение нулевого (те как-бы отсутствующего) элемента равно нулю(вроде как static нулем инициализируется, если не задан явно, вроде понятно, но его же нет, массив на НОЛЬ элементов;
4. разыменованный указатель (а на что он указывает??) тоже дает ноль.
У кого есть какие соображения?