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