Я нашел функцию, которая вычисляет квадрат числа:
int p(int n) {
int a[n]; //works on C99 and above
return (&a)[n] - a;
}
Возвращает значение n 2. Вопрос в том, как это делается? После небольшого тестирования я обнаружил, что между (&a)[k]
и (&a)[k+1]
есть sizeof(a)
/sizeof(int)
. Почему это?