Если существует точное соответствие между количеством и типами аргументов, указанными в вызове метода, и сигнатурой метода перегруженного метода, то это метод, который будет вызываться. Вы используете ссылки на объекты, поэтому java решает во время компиляции, что для параметра Object существует метод, который принимает непосредственно Object. Так он назвал этот метод 3 раза.
Это происходит потому, что объявление переменных внутри цикла for было недействительным C до C99 (что является стандартом C, опубликованным в 1999 году), вы можете либо объявить свой счетчик вне for, как указано другими, либо использовать -std = флаг c99, чтобы явно указать компилятору, что вы используете этот стандарт, и он должен интерпретировать его как таковой.
Вам нужно объявить переменную j, используемую для первого цикла for перед циклом.
int j;
for(j=0;j<5;j++)
printf("%d",Arr[j]);
Это будет рабочий код
#include <stdio.h>
void funct(int[5]);
int main()
{
int Arr[5]={1,2,3,4,5};
int j = 0;
funct(Arr);
for(j=0;j<5;j++)
printf("%d",Arr[j]);
}
void funct(int p[5]){
int i,j;
for(i=6,j=0;i<11;i++,j++)
p[j]=i;
}
. Самое простое решение от "Профессор доктор Майкл Хелбиг". он переключит ваш режим на c99, поэтому вам не нужно каждый раз добавлять флаг в make-файле http://www.bigdev.de/2014/10/eclipse-cc-for-loop-initial.html? showComment = 1447925473870 # c6845437481920903532
Решение: используйте опцию -std = c99 для вашего компилятора! Перейдите: Проект> Свойства> Сборки C / C ++> Настройки> Настройки инструмента> Компилятор GCC C> Диалект> Стандарт языка: выберите «ISO C99»