【发布时间】:2017-07-28 15:19:54
【问题描述】:
我的程序需要一个函数来查找数组的最大元素。然后它返回最大元素的位置。但是,在找到最大元素时,我只能使用指针算法。
#include <stdio.h>
int *largest(int *array, int size){
int *p1 = array;
int *count, max = *p1;
for(*count = 0; count < p1 + size - 1; p1++){
if (max < *p1){
max = *p1;
count++;
}
}
return count;
}
int main(void){
int *array, size = 10;
printf("enter elements; ");
for(int i = 0; i < size; i++){
scanf("%d ", &array);
array++;
}
printf("\nThe largest element in the array is in element %d", *largest(array, size));
}
但是,当我运行程序时,在输入元素的值后,它给了我:
segmentation fault (core dumped)
【问题讨论】:
-
尝试为数组分配一些内存?然后将整数分配给每个数组位置?然后不要增加数组,因为它不再指向基数? (初学者)
-
您没有为数组分配内存。您需要添加行
array = (int*)malloc(sizeof(int)*size); -
您在取消引用之前没有初始化
count。 -
您还将整数读入
int*,这不太可能结束。
标签: c arrays pointers segmentation-fault