【发布时间】:2021-12-05 13:59:00
【问题描述】:
我正在为 C 中的类解决一个问题,我从未排序的数组中返回最大值,并且该值的索引存储在指针 index_ptr 中。
这是我构建的代码:
int get_biggest_index(int array[], size_t array_size, int *index_ptr){
int max = array[0], index;
for (int i = 0; i < array_size-1; i++){
if (array[i+1] > max){
max = array[i];
index = i;
}
}
index_ptr = &index;
printf("idx: %d\n", *index_ptr); //purely for testing
return max;
}
我知道上面的工作是为了返回最高值,但在这种情况下运行它:
int main() {
int arr[5] = {4, 7, 3, 9, 5};
size_t arr_size = 5;
int *idx;
printf("biggest value in array arr => %d\n", get_biggest_index(arr, arr_size, idx));
printf("idx of biggest value => %d", *idx);
return 0;
}
输出是:
idx: 3
max value in array arr => 9
idx of max value => -98693133
有人可以具体解释一下为什么会在指针的值方面发生这种情况以及如何解决它吗?
我也很乐意听取有关其余代码的任何其他建议,因为我相信它会更好。
非常感谢您的帮助!
【问题讨论】: