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