2017-02-16 6 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

Обратите внимание, что нормальное написание «длины» имеет t перед h. –

+0

Извините, добавил бы, что: replace2.c: 41: warning: конфликтующие типы для 'replace' replace2.c: 27: note: предыдущее неявное объявление 'replace' было здесь –

ответ

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); 

Надеется, что это помогает.