2013-01-16 35 views
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進行編譯時,有一個警告,即如果傳遞參數1'gradescounter'使得整型指針沒有轉換,爲什麼?謝謝大家能幫助將本地陣列的元素作爲按值傳遞給另一個函數時出現分段錯誤

回答

4
  1. indexnum沒有初始化當您使用它來創建grade陣列。您應該使用已知的值。

  2. 您正將一個int傳遞給期望int[](這只是int *的語法糖)的函數。這就是問題所在 - 要麼通過grade,要麼更改功能只需要int,無論哪個都是正確的。

  3. main應該在某處有一個return聲明。

+1

代碼非常感謝你。你的解釋是非常明確和有幫助的 – user1834274

0

我與卡爾Norum時同意

見下

#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");  
} 
+0

如果indexnum是11呢? – ericzma

+0

@志強馬會有些垃圾值。 函數'gradescounter'沒有定義,所以我做了一個示例,說明他應該如何去做 在我的示例中,他可以檢查索引,然後在數組中輸出值:) – nimish

相關問題