c - 纯 C : Copy rows and columns of a 2D array using pointers

标签 c arrays pointers

假设我已经使用双指针初始化了一个 int 数组

int **array;

我已经使用 malloc 像这样给出了想要的数组大小

array = malloc( sizeof *array * ROWS );
if ( array ){
    for ( size_t i = 0; i < ROWS; i++ )
        *(array  + i) = malloc( sizeof *(*(array  + i)) * COLS );
}

数组的每个索引都用一个随机整数声明。 我正在尝试找到一种比使用 for 循环更快的方法来复制一行或一列。我的选择是使用 memcpy,一开始它看起来是个好主意,因为我使用

复制行没有问题
memcpy((array + 1), (array + 3), (int)sizeof(int **));

但是当涉及到列时使用

memcpy(*(array + 1), *(array + 3), (int)sizeof(int *));

实际上并没有像我预期的那样工作,只复制了一个元素。有什么我想念的吗?

最佳答案

对于二维数组,如果您的行在内存中连续排列(也称为行优先数组),那么您的列将不会连续。

memcpy,另一方面,只复制连续的内存块。因此,您不能仅通过一次调用 memcpy 来复制整个列。您宁愿需要一个一个地复制每个元素,为此您不需要 memcpy

关于c - 纯 C : Copy rows and columns of a 2D array using pointers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55711758/

相关文章:

c++ - 查看数组中的指针是否为空(c++)

c++ - 函数指针和回调

C-SERVER : sizeof() measures top declared thing. 不是新的

c - 从 C 代码项目中只提取所需的函数?

java - 透彻理解Java中的任何多维数组

c - 指向结构和打印的指针

c - bash : ./comp.out:权限被拒绝

c - 结构变量中的数组成员

javascript - 函数在 JQuery 中给出未定义的错误

带有用户输入名称和数值的javascript并行数组