不过,我想将长度为L的数组重塑为MxN中的一个数组,而不是通过复制for循环中的元素来创建新内存我想进行一些指针转换,以允许我使用双订阅(array[X][Y])访问数组。
我在网上搜索了很久,找不到任何有用的东西。
任何帮助都将不胜感激。
编辑:感兴趣的数组在堆上,而不是堆栈上。

最佳答案

指针投射在这里似乎不是个好主意。但是,如果在运行时之前知道列的数量,我经常遇到的一个选项是简单地定义一个宏,例如。

#define arrayName(i,j) arrayName[((i)*N) + (j)]

或者
 #define ELEMENT(arrayName, i,j) (arrayName)[((i)*N) + (j)]

如果你希望它更灵活。

关于c - C重塑1d至2d,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26274616/

10-10 08:28