Здесь у меня есть указатель ptr
на массив arr
из 4 целых чисел. ptr
указывает на весь массив. ptr[0]
или *ptr
указывает на первый элемент массива, поэтому добавление 1 к ptr[0]
дает адрес второго элемента массива.
Я не могу понять, почему с помощью sizeof(ptr[0])
дает размер всего массива, 16 байт, а не размер только первого элемента, 4 байта (поскольку ptr[0]
указывает на первый элемент в массиве).
int arr[4] = {0, 1, 2, 3};
int (*ptr)[4] = &arr;
printf("%zd", sizeof(ptr[0])); //output is 16