gpt4 book ai didi

c++ - 为什么这段代码不起作用? (原型(prototype)中的 &array)

转载 作者:太空狗 更新时间:2023-10-29 20:42:48 26 4
gpt4 key购买 nike

午后好程序员,希望快乐这是代码:

    #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'未声明(首先使用此功能)”我该如何解决?我有一个更大的代码,但我想知道如何在函数中放置带引用的数组我认为这是语法问题,我不知道在哪里可以找到解决方案所以我来了我在互联网上搜索了很多,但我不知道如何正确地搜索我的问题解决方案

原代码:

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

最佳答案

真的试图声明一个引用数组吗?如果是这样,那么你就是做不到。

但是,如果您想声明对数组的引用(在这种特殊情况下我也没有看到原因),那么您必须将其括起来,因为 [] 有比 & 更高的优先级。此外,在这种情况下,您必须为数组指定一个维度,否则会出现编译器错误:

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

关于c++ - 为什么这段代码不起作用? (原型(prototype)中的 &array),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17533516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com