Я пытаюсь найти длину массива структур «заголовка», которые я определил (заголовок содержит только несколько информационных членов int, если это имеет значение здесь). Я пытаюсь это сделать, передав fl
, указатель на начало массива и idx
, значение индекса, указывающее, где находится указатель fl_tails
, расположенный в конце массива (в других/повторяющихся словах, 'fl_tails [idx ] `является указатель конца):Поиск длины массива в C
int arr_size(header* fl, int idx){
int cnt = 1; /* Anything passed guaranteed to have at least 1 */
while(fl != fl_tails[idx]){
fl++;
cnt++;
}
}
Я думал, что это будет просто продвигать fl
указатель и произвести подсчет должным образом до тех пор, пока не будет достигнут к концу, но он переходит в бесконечный цикл. Мне интересно, вызвано ли это чем-то в этой функции или просто чем-то в другом месте, которое мне нужно найти. Когда я печатал адреса начала и конца как unsigned ints, они казались достаточно безвредными - такие вещи, как 16777216 и 16777344, соответственно. Может быть, что-то не так с моим пониманием структуры header
и ее размером/эффектом на шагах?
Если у вас уже есть индекс для последнего элемента массива. Длина массива - просто 'index + 1', зачем вам снова проходить через массив? –
Это другой тип индекса из отдельного массива. – nicole
Для C проблематично найти размер простого старого массива C после его деградации в указатель (т. Е. Вы передали его функции). Обычно вы отслеживаете количество элементов для массива или общий размер массива и передаете это в любую функцию, которая управляет массивом. –