迭代C中的许多数组

Sar*_*any 3 c arrays loops multidimensional-array

我有一个包含许多数组的头文件.每个阵列对(即x0,y0)具有相同的长度,但是不同的对具有不同的长度.

numPaths[] = 4;
pathLengths[] = {12, 11, 13, 10};
int x0[] ={4.0, 4.0, ...};
int x1[] ={224.0, 224.0, ...};
int x2[] ={446.0, 446.0, 446.0, ...};
int x3[] ={598.0, 598.0, ...};
int y0[] ={11.0, 11.0, 11.0, 15.0, ...};
int y1[] ={2.0, 2.0, 2.0, 6.0, 17.0, ...};
int y2[] ={1.0, 1.0, 1.0, 5.0, ...};
int y3[] ={4.0, 4.0, 4.0, 5.0, 10.0, ...};
Run Code Online (Sandbox Code Playgroud)

我希望能够遍历这个数组列表并访问数据点信息.我不知道该怎么做,特别是因为路径长度不同.我在想这样的伪代码:

i=0;
n=0;
if i< numPaths:
    if n < pathLengths[i]:
        x_tot = x'[i]'[n]
        y_tot = x'[i]'[n]
    n++
    i++
Run Code Online (Sandbox Code Playgroud)

其中'[i]'是引号,因为这些数组的名称是字符串.

Tom*_*mmy 6

C不是反思语言.这一事实x0被称为x0x1被称为x1已被编译器扔掉.因此,一段代码无法执行"查找具有名称的数组x1"操作,这实际上是您的代码尝试执行的操作.在编译过程中,C的预处理器也可能有点过于直率.

所以你能做的最好的事情是:

int *xs[] = {x0, x1, x2, x3};

for(int c < numPaths)
{
    int *thisX = xs[c];

    ... read from thisX[0], thisX[1], etc...
}
Run Code Online (Sandbox Code Playgroud)

所以你所做的就是告诉编译器获取x0,x1,x2等的地址,并将它们放入一个数组中.这样你就可以根据索引查找数组的地址,然后从那里访问数组.