Подтвердить что ты не робот

Как найти размер целочисленного массива

Как найти размер целочисленного массива в C.

Любой доступный метод без прохождения всего массива один раз, чтобы узнать размер массива.

4b9b3361

Ответ 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);

Должен работать.