我有一个像这样的二维数组:
ptr = (int **) malloc(size);
for (i = 0; i < len; i++) {
ptr[i] = (int *) malloc(size);
}
有没有一种简单的方法可以为该数组创建一个int *intPtr
,以便我可以按行主要顺序访问值?
例如:如果 ptr
指向一个 n*n 数组,我想获取第二列的第一项,如下所示:*(intPtr + n)
我需要这种转换来将二维数组传递给 cuda 内核,我想避免将二维数组传递给该内核,因为这似乎很复杂。
最佳答案
没有。如果您分配了一个真正的 int
二维数组:
int a[size][size];
那么答案可能是肯定的,尽管结果不可移植。引用this article了解更多数组类型双关信息。
但是访问数组行中的元素需要显式取消引用指针。
关于C语言中二维数组转一维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23716962/