2017-02-16 105 views
-1

這裏的函數是錯誤消息:衝突類型在C

replace2.c:41:警告:衝突的類型 '替換'
replace2.c:27:注:先前的隱式的聲明'替換' 是 這裏

這裏是我的功能:

void replace (int *a1, int *a2, int n) 
    { 
    int *p; 
    int *p2; 
    int sum = 0; 
    for (p = a1, p2 = a2; p < a1 + n; p++, p2++) 
    { 
    sum = (6 + *p) % 10; 
    *p2 = sum; 
    } 

} 

這裏是我打電話:

請注意在調用函數之前,會掃描int_lenght(輸入由用戶給出)。

  int int_lenght; 
     array[int_lenght]; 
     arrayb[int_lenght]; 

     replace(array, arrayb, int_lenght); 
+1

什麼是確切的錯誤信息?你打電話給你之前是否有範圍函數的原型? –

+0

請注意,「長度」的正常拼寫在h之前有t。 –

+0

對不起應該補充說:replace2.c:41:警告:'替換'的衝突類型 replace2.c:27:注意:'以前的'隱式聲明'替換'在這裏 –

回答

1

問題可能是replace在使用前未被聲明。與此類似,

void replace(int*, int*, int); 
+0

幾乎肯定,這不是問題。我之前使用過它們,沒有聲明它們,它的工作原理是,我的代碼的第一部分應該是函數的聲明。 「我想」 –

+0

'我以前用過它們而沒有聲明它們,它確實有效,但是你是否已經將函數放在其調用語句的上面或下面? –

0

你替換功能正在2指針值和一個整數值,但您正在發送兩個陣列,而不是整數的

int int_lenght; 
array[int_lenght]; 
arrayb[int_lenght]; 

replace(array[int_lenght], arrayb[int_lenght], int_lenght); 

希望它可以幫助你。