私はCが初めてで、ポインターに問題があります。オンラインでも仲間でも答えを見つけることができなかったので、ここにいます。
私は次の任務を与えられました:
- 20 個の乱数の配列を作成する
- 整数を出力する
- 配列を昇順にソートする
- もう一度印刷して
プログラムを GCC でコンパイルして実行すると、セグメンテーション違反が発生します。関数内でnumber[i]
またはの値を設定しようとしたときに発生するように絞り込みました。どんな助けでも大歓迎です。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: 警告: 互換性のないポインター型から「sort」の引数 1 を渡しています
Q3.c:9: 注: 予想される âint *â ですが、引数の型は âint **â です