Как найти размер целочисленного массива в C.
Любой метод, доступный, не пересекая целый массив однажды, для обнаружения размера массива.
Если массив является глобальной, статической или автоматической переменной (int array[10];
), то sizeof(array)/sizeof(array[0])
работает.
Если это динамически выделенный массив (int* array = malloc(sizeof(int)*10);
) или переданный как аргумент функции (void f(int array[])
), то вы не сможете найти его размер во время выполнения. Вам придется где-то хранить размер.
Обратите внимание, что sizeof(array)/sizeof(array[0])
прекрасно компилируется даже для второго случая, но молча выдаст неверный результат.
если массив статически выделен:
size_t size = sizeof(arr) / sizeof(int);
если массив динамически выделен (куча):
int *arr = malloc(sizeof(int) * size);
где размер переменной - размерность массива.
int len=sizeof(array)/sizeof(int);
Должно работать.