我有一个像这样的二维数组:
ptr = (int **) malloc(size);
for (i = 0; i < len; i++) {
ptr[i] = (int *) malloc(size);
}
是否有一种简单的方法可以为该数组创建int *intPtr
,以便我可以按行主要顺序访问值?
例如:如果ptr
指向n * n数组,我想得到第二列的第一项,如下所示:*(intPtr + n)
我需要这个转换来将我的二维数组传递给cuda内核,我想避免将二维数组传递给该内核,因为这似乎很安静。
答案 0 :(得分:3)
没有。如果你已经分配了int
s的真正的二维数组:
int a[size][size];
然后答案可能是肯定的,尽管结果不可移植。有关更多数组类型的惩罚信息,请参阅this article。
但访问数组行中的元素需要显式解引用指针。