Я написал небольшую программу для определения минимального элемента в массиве a[]
. Когда я отлаживаю, программа, кажется, работает нормально, но затем цикл for в функции min()
прекращает выполнение после двух шагов, несмотря на размер массива размером 10.Вычисление минимального элемента в массиве
Конечный результат 23, когда он может быть 3 .
Действительно указан код sizeof(a)/sizeof(int)
? Я нашел его на другом article на stackoverflow.
#include <stdio.h>
#include <limits.h>
int min(int[]);
int main(){
int a[]={100,23,3,4,5,6,7,8,9,10};
printf("%d", min(a));
return 0;
}
int min(int a[]){
int min = INT_MAX, i;
for(i = 0; i < sizeof(a)/sizeof(a[0]); i++){
if((i>=0) && (a[i]< min))
min = a[i];
}
return min;
}
Когда вы передаете массив функции, он распадается на указатель. Выполнение 'sizeof' на указателе дает только размер указателя, а не то, на что указывает. –
В этом случае это не так. См. Второй ответ на связанный с вами вопрос. – user694733
@ Luke Collons: Поскольку Joachim Pileborg упоминается в комментарии, просто найдите размер массива, используя 'sizeof (a)/sizeof (a [0])' и передайте его функции 'min' в качестве второго аргумента и используйте его в' min' function , –