非常具体的问题,可能是因为我对C语言中多维数组的理解很差

int io_pipes[NUM_IO_PROC][n][2][2];

for (int i = 0; i < n; ++i) {
    int pipes[NUM_IO_PROC][2][2];
    for (int j = 0; j < NUM_IO_PROC; ++j) pipes[j] = io_pipes[j][i];
}

当然,还有一些东西丢失了(比如pipes变量发生了什么)问题是在第5行,我得到了一个编译器错误,上面写着“赋值中的不兼容类型”,我希望编译器能给我更多的信息,因为据我所知,pipes[j]io_pipes[j][i]都是int[2][2]类型。

最佳答案

不能“分配”数组(至少,我觉得你在做什么。)
您需要逐个复制每个元素也许您可以使用一个现有的库函数来完成这个任务?

for(int j = 0; j < NUM_IO_PROC; ++j)
    memcpy(&pipes[j], &io_pipes[j][i], sizeof pipes[j]);

关于c - C多维数组,分配不兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7884741/

10-11 20:28