我是 C 新手,指针有问题。我一直无法在网上或通过我的同龄人找到答案,所以我在这里。
我被分配到:
- 创建一个包含 20 个随机整数的数组
- 打印出整数
- 按升序对数组进行排序
- 再次打印出来
当我用 GCC 编译程序并运行时,我遇到了分段错误。当我尝试在函数中设置number[i]
or的值时,我已将其范围缩小到发生。任何帮助,将不胜感激。number[k]
sort
#include <stdio.h>
void sort(int* number, int n){
/*Sort the given array number , of length n*/
int temp, min;
int i, k;
for(i=0; i<n; i++){
min = i;
for(k=i+1; k<n; k++){
if(number[k]<min){
min = k;
}
}
temp = number[i];
number[i] = number[k];
number[k] = temp;
}
}
int main(){
/*Declare an integer n and assign it a value of 20.*/
int n=20;
/*Allocate memory for an array of n integers using malloc.*/
int *array = malloc(n * sizeof(array));
/*Fill this array with random numbers, using rand().*/
srand(time(NULL));
int i;
for(i=0; i<n; i++){
array[i] = rand()%1000+1;
}
/*Print the contents of the array.*/
for(i=0; i<n; i++){
printf("%d\n", array[i]);
}
/*Pass this array along with n to the sort() function of part a.*/
sort(&array, 20);
/*Print the contents of the array.*/
printf("\n");
for(i=0; i<n; i++){
printf("%d\n", array[i]);
}
return 0;
}
这是我得到的编译错误:
Q3.c:在函数âmainâ中:
Q3.c:31:警告:函数“malloc”的隐式声明
Q3.c:31:警告:内置函数“malloc”的隐式声明不兼容
Q3.c:34:警告:函数âsrandâ的隐式声明
Q3.c:34:警告:函数“time”的隐式声明
Q3.c:37:警告:函数ârandâ的隐式声明
Q3.c:46:警告:从不兼容的指针类型传递“排序”的参数 1
Q3.c:9:注意:预期 âint *â 但参数是âint **â 类型