Проходя через несколько вопросов на собеседовании с C, я обнаружил вопрос о том, "Как найти размер массива в C без использования оператора sizeof?", Со следующим решением. Это работает, но я не могу понять, почему.
#include <stdio.h>
int main() {
int a[] = {100, 200, 300, 400, 500};
int size = 0;
size = *(&a + 1) - a;
printf("%d\n", size);
return 0;
}
Как и ожидалось, возвращается 5.
редактировать: люди указали на этот ответ, но синтаксис немного отличается, то есть метод индексации
size = (&arr)[1] - arr;
поэтому я считаю, что оба вопроса верны и имеют несколько иной подход к проблеме. Спасибо всем за огромную помощь и подробное объяснение!