c - 遍历 C 中的多个数组

标签 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, ...};

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

i=0;
n=0;
if i< numPaths:
    if n < pathLengths[i]:
        x_tot = x'[i]'[n]
        y_tot = x'[i]'[n]
    n++
    i++

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

最佳答案

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

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

关于c - 遍历 C 中的多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16409522/

相关文章:

java - 在 for 循环内部中断 while 循环 Java

xslt - xslt 中的简单循环

c - 如何处理具有运行时确定布局的 C 结构?

javascript - 我如何检查 Javascript 中的唯一性?

java - 方法 .toArray(IntFunction<A[]> Generator) 如何知道新数组的大小

vba - 在文本末尾添加一个字符并将字母 A 增加到 B

交叉编译的 C Windows libcurl 在 Ubuntu 上没有正确链接

c - Switch 语句没有达到我的预期

c - 内存管理和内存分配之间的区别。当分配/访问发生时它们都一起工作2内存|它们是如何精确相关的

python - 使用 numpy 和 matplotlib 叠加图像分割