почему этот код не работает? (& amp; массив в прототипе)

хорошие после полудня программисты, надеюсь счастливы
это код:

    #include<iostream.h>void sum(int &a[])
{
a[2] = a[1] +a[0];
}int main()
{
int a[3]={4,2,0};
sum(a);
cout<<a[2]<<endl;
}

мой компилятор говорит: «объявление ‘a’ как массива ссылок» и: «a» undeclared (сначала используйте эту функцию) «как я могу это исправить?
У меня есть больший код, но я хочу знать, как поместить массив со ссылкой в ​​функцию
я думаю, что это проблема в синтаксисе, и я не знаю, где я могу найти решение, поэтому я прихожу сюда
Я много ищу в интернете, но не знаю, как правильно искать решение проблемы

оригинальный код:

  void Jump(int &y,int &y0, float V0 ,float &time, int &ground , int radius , int thickness_of_ground ,bool &protect_from_jump ,bool &ready_for_jump , bool (&key)[5])
{
int SPACE=4;
float a_y=9.8;
int FPS =60;

if (protect_from_jump) key[SPACE]=false;

if(!key[SPACE] && ground-(radius+thickness_of_ground)-y>0)
{
V0=0;
y=int(0.5*a_y*time*time -V0*time + y0);
time +=6.0/FPS;
protect_from_jump=true;
}
else if (!key[SPACE] &&  ground-(radius+thickness_of_ground)-y<=0)
{

y=ground -(radius+thickness_of_ground);
y0=y;
time=0;
protect_from_jump=false;

}

if(key[SPACE])
{
if (ready_for_jump)
{
y0=y;
ready_for_jump = false;
}
V0=40;
y=int(0.5*a_y*time*time -V0*time + y0);
time +=6.0/FPS;

if(ground-(radius+thickness_of_ground)+1-y<=0)
{
ready_for_jump=true;
y=ground-(radius+thickness_of_ground);
y0=y;
time=0;
key[SPACE]=false;
}
}

}

3

Решение

Ты действительно пытаетесь объявить массив ссылок? Если так, то ты просто не можешь.

Если, однако, вы хотите объявить ссылку на массив (что опять-таки не вижу причины для этого конкретного случая), то вы должны заключить его в скобки, потому что [] имеет более высокий приоритет, чем &, Кроме того, в этом случае вы должны указать размерность вашего массива, иначе это ошибка компилятора:

void sum(int (&a)[10])
{
// do stuff
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]