C++中的数组问题

man*_*pt1 1 c++ arrays

要在xth位置访问数组indice,我们可以使用某种插图,如下所示

#include<iostream>
using namespace std;
int main(){
    float i[20];
    for(int j=0;j<=20;j++)
        i[j]=0;
}
Run Code Online (Sandbox Code Playgroud)

但是下面的代码不起作用

#include<iostream>

using namespace std;

float oldrand[55];
int jrand;

void advance_random(){
    int j1;
        float new_random;

    for(j1=0;j1<=23;j1++){
        int temp = j1+30;
        new_random = (oldrand[j1]) - (oldrand[temp]);
        if(new_random <0.0)
            new_random = new_random+1;
        oldrand[j1] = new_random;
    }
    for(j1=24;j1<=54;j1++){
        new_random[j1] = oldrand[j1] - oldrand[j1-23];
        if(new_random[j1]<0.0)
            new_random[j1] = new_random + 1;
        oldrand[j1]=new_random;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

ga.cpp:20: error: invalid types ‘float[int]’ for array subscript
ga.cpp:21: error: invalid types ‘float[int]’ for array subscript
ga.cpp:22: error: invalid types ‘float[int]’ for array subscript
Run Code Online (Sandbox Code Playgroud)

我无法在代码中找到错误请帮助我

Bli*_*ndy 7

new_random未被声明为浮点数组,它被声明为浮点数.编译器试图告诉你不能索引到float.


Pét*_*rök 5

正如其他人所说,new_random未声明为数组,因此编译错误.

而且,这种类型的循环

float i[20];
for(int j=0;j<=20;j++)
    i[j]=0;
Run Code Online (Sandbox Code Playgroud)

你将耗尽数组边界并得到未定义的行为.适当的形式是

for(int j=0;j<20;j++)
Run Code Online (Sandbox Code Playgroud)

这是因为在C/C++中,数组从0开始索引,因此包含20个元素的数组包含从0到19索引的元素.