在C中将二维数组转换为一维

时间:2014-05-17 23:04:45

标签: c arrays cuda

我有一个像这样的二维数组:

ptr = (int **) malloc(size);

for (i = 0; i < len; i++) {
    ptr[i] = (int *) malloc(size);
}

是否有一种简单的方法可以为该数组创建int *intPtr,以便我可以按行主要顺序访问值?

例如:如果ptr指向n * n数组,我想得到第二列的第一项,如下所示:*(intPtr + n)

我需要这个转换来将我的二维数组传递给cuda内核,我想避免将二维数组传递给该内核,因为这似乎很安静。

1 个答案:

答案 0 :(得分:3)

没有。如果你已经分配了int s的真正的二维数组:

int a[size][size];

然后答案可能是肯定的,尽管结果不可移植。有关更多数组类型的惩罚信息,请参阅this article

但访问数组行中的元素需要显式解引用指针。