1
#include<stdio.h>
void gradescounter(int[], int);

int main(void){
   int indexnum;
   int grade[indexnum];

   /* processing phase */

   printf( "Please enter the index number: ");
   scanf( "%d", &indexnum);

   gradescounter(grade[indexnum], indexnum);
}

番号を入力すると、セグメンテーション違反エラーが発生します。誰かが私が間違っていた場所を教えてもらえますか? また、コンパイルに gcc を使用した場合、「gradescounter」の引数 1 を渡すとキャストなしで整数からポインターが作成されるという警告が表示されますが、なぜですか? みんな助けてくれてありがとう

4

2 に答える 2

4
  1. indexnumgrade配列の作成に使用する場合、初期化されません。代わりに既知の値を使用する必要があります。

  2. intを期待する関数に渡していますint[](これは の構文糖衣ですint *)。それが問題です - pass を渡すかgrade、関数を take just に変更するintか、どちらか正しい方です。

  3. mainreturnおそらくどこかに声明があるはずです。

于 2013-01-16T00:54:32.053 に答える
0

カール・ノーラムに同意

以下のコードを参照してください

#include <stdio.h>
void gradescounter(int*, int);

int main(void){

   int indexnum;
   int grade[]={1,2,3,4,5,6,7,8,9};

   /* processing phase */

   printf( "Please enter the index number: ");
   scanf( "%d", &indexnum);

   gradescounter(grade, indexnum);

   return 0;
}

void gradescounter(int *array, int index){

    if(index > -1 && index < 9)
        printf("The number entered is : %d\n",array[index]);
else 
        printf("Please enter the index number in the range of 0 and 8\n");    
}
于 2013-01-16T03:56:58.367 に答える