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

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

Любой метод, доступный, не пересекая целый массив однажды, для обнаружения размера массива.

25
задан Chris says Reinstate Monica 14 May 2013 в 12:05
поделиться

3 ответа

Если массив является глобальной, статической или автоматической переменной (int array[10];), то sizeof(array)/sizeof(array[0]) работает.

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

81
ответ дан 28 November 2019 в 17:48
поделиться

если массив статически выделен:

size_t size = sizeof(arr) / sizeof(int);

если массив динамически выделен (куча):

int *arr = malloc(sizeof(int) * size);

где размер переменной - размерность массива.

4
ответ дан 28 November 2019 в 17:48
поделиться
int len=sizeof(array)/sizeof(int);

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

-1
ответ дан 28 November 2019 в 17:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: