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. 您正在将 an 传递int给期望的函数int[](这只是 的语法糖int *)。这就是问题所在 - 要么 pass grade,要么将函数更改为 just int,以正确者为准。

  3. main可能应该在return某处发表声明。

于 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 回答