C多维数组,不兼容的赋值

时间:2011-10-25 04:33:14

标签: c multidimensional-array

非常具体的问题,可能是由于我对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]类型。

2 个答案:

答案 0 :(得分:1)

你不能'分配'数组。 (至少,我认为你想要做的事情。)

您需要逐个复制每个元素。也许您可以使用现有的库函数之一来完成此任务?

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

答案 1 :(得分:0)

数组标识符在内部被指定为指向基址的指针,但与指针不同,它们无法分配您尝试在pipes[j] = io_pipes[j][i];

中执行的新地址值