Язык C — узнаем размер массива без шуму и пыли без sizeof

Я часто думаю о жизни и пришел к такому выводу, что многое в ней лишнее. Поэтому нафига нам подключаемые библиотеки если можно все написать самому. И пусть пузатый дядька по имени бизнес вытирая потные подмышки скажет нам делай бть… не как лучше, а как быстрее. В этот раз мы засунем ему болт в задний проход и пойдем своей дорогой.

Задача: нужно узнать длину массива, но без sizeof, ибо будем считать, что мы одни на планете и на все написанные ранее библиотеки «поклали прибор».

#include <stdio.h>

int main(void) {

//наш массивчик
int left[] = {2,67,89,200,100,100};

//узнаем размер массива без функции sizeof
int size = *(&left + 1) - left;
    printf("%d\n", size);    
  return 0;
}

Здесь следующее:

&left - указатель на массив из 6 элементов
(&left + 1) - адрес на 6 целых чисел - указатель на массив из 6 целых чисел
*(&left + 1) - тот же адрес, что и (&left + 1) , но тип указателя int *

Понятно что нифига асболютно не понятно. Что тут происходит подробно напишу позже.

Запись опубликована автором в рубрике С с метками .

Добавить комментарий