将多维数组传递给** ptr函数

主垃圾

就在今天,我还在考虑将多维数组传递给函数的不同方法。我知道的方法归纳为三个小功能:

void method_a(int m, int n, int (*ptr_arr)[n])
{
    int i, j;
    for (i = 0; i < m; i++)
    {
         for (j = 0; j < n; j++)
         {
            ptr_arr[i][j] = j + 1;
        }
    }
}

void method_c(int m, int n, int arr[][n])
{
    int i, j;
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            arr[i][j] = j + 3;
        }
    }
}

void method_b(int m, int n, int *ptr_arr)
{
    int i, j;
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            *((ptr_arr + i * n) + j) = j + 2;
        }


}

我还阅读了很多有关以下内容的声明method_a()

void method_d(int m, int n, int **ptr_arr)
{
    int i, j;
    for (i = 0; i < m; i++)
    {
         for (j = 0; j < n; j++)
         {
            ptr_arr[i][j] = j + 1;
        }
    }
}

但是它似乎不适用于静态数组。这是否仅通过处理动态分配的数组malloc()如果它也适用于静态声明的数组,那么有人可以举个例子吗?

Serge Ballesta

方法a,b和c是等效的,并且适用于二维数组(声明为int arr[x][y])。方法d适用于完全不同的对象:指向一维数组的指针的数组。

比迪数组:

a 00 a 01 a 02 a 03

a 10 a 11 a 12 a 13

a 20 a 21 a 22 a 23

指针数组

a0 a1 a2

|  |  |________ a20 a21 a22 a23
|  |___________ a10 a11 a12 a13
|______________ a00 a01 a02 a03

在这种情况下,您将拥有一个指向不同行的指针数组,并且这些行在内存中不必连续

或者,如果您有一个二维数组,例如int arr[3][4];,您可以使用它轻松构建一个指针数组:

int *ptarr[3];
...
for(i=0; i<3; i++) {
    ptarr[i] = &(arr[i][0]);
}

然后可以将其与方法d一起使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将多维数组传递给** ptr函数

来自分类Dev

将多维数组传递给函数错误

来自分类Dev

将多维数组传递给python中的函数

来自分类Dev

将多维数组传递给函数并编辑值

来自分类Dev

无法将多维数组传递给foreach函数-PHP

来自分类Dev

将数组传递给函数

来自分类Dev

将数组传递给函数

来自分类Dev

如何使用CFFI将多维Numpy数组传递给C函数?

来自分类Dev

我无法使用malloc()将多维变量数组传递给C中的函数

来自分类Dev

将多维数组(最初没有定义其维)传递给C ++中的函数

来自分类Dev

如何将循环通过多维数组传递给函数

来自分类Dev

将多维字符数组传递给 C 中的 void 函数时出错

来自分类Dev

将多维数组作为函数参数传递

来自分类Dev

将多维数组作为函数参数传递

来自分类Dev

将char数组的数组传递给函数

来自分类Dev

将char数组的数组传递给函数

来自分类Dev

检查传递给gdb中函数的多维数组

来自分类Dev

将多维内存视图传递给C函数

来自分类Dev

为什么在将指针传递给函数后访问指向多维数组的指针会返回分段错误?

来自分类Dev

将指向数组的指针传递给函数

来自分类Dev

将结构数组传递给函数?

来自分类Dev

C ++直接将数组传递给函数

来自分类Dev

将数组传递给bash函数

来自分类Dev

无法将char数组传递给函数

来自分类Dev

将“指针数组”传递给函数

来自分类Dev

PHP将数组传递给pack()函数

来自分类Dev

Fortran将数组传递给函数

来自分类Dev

将数组“ typedef struct”传递给函数

来自分类Dev

将指针数组传递给函数