C语言中二维数组转一维

标签 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 内核,我想避免将二维数组传递给该内核,因为这似乎很复杂。

最佳答案

没有。如果您分配了一个真正的 int 二维数组:

int a[size][size];

那么答案可能是肯定的,尽管结果不可移植。引用this article了解更多数组类型双关信息。

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

关于C语言中二维数组转一维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23716962/

相关文章:

c - 简单的字符串递归

c - 使用 fseek() 更新二进制文件

c++ - 为什么我的函数在应该返回 char 时返回垃圾?

cuda - cublasSetVector() 与 cudaMemcpy()

cuda - 是否可以从主机中断 CUDA 内核?

c - 指向函数指针的指针是否可以转换为 void 指针,反之亦然?

c - 如何在单独的函数中释放 malloc 的指针?

python - 将文件打开到数组中,搜索字符串并返回值

php - 使用可能的字典从 PHP 数组创建一个 JSON 字符串

c++ - nppiResizeSqrPixel_32f_C4R() 如何工作?