通过将指针传递给C中的函数来创建2D数组

马辛

因此,我阅读了数十个将2D数组指针传递给函数以获取/更改函数中该数组的值的示例。但是可以在函数内部创建(分配内存)。像这样的东西:

#include <stdio.h>

void createArr(int** arrPtr, int x, int y);

int main() {

    int x, y;       //Dimension
    int i, j;       //Loop indexes
    int** arr;      //2D array pointer
    arr = NULL;
    x=3;
    y=4;

    createArr(arr, x, y);

    for (i = 0; i < x; ++i) {
        for (j = 0; j < y; ++j) {
            printf("%d\n", arr[i][j]);
        }
        printf("\n");
    }
    _getch();    
}

void createArr(int** arrPtr, int x, int y) {
    int i, j;       //Loop indexes
    arrPtr = malloc(x*sizeof(int*));
    for (i = 0; i < x; ++i)
        arrPtr[i] = malloc(y*sizeof(int));

    for (i = 0; i < x; ++i) {
        for (j = 0; j < y; ++j) {
            arrPtr[i][j] = i + j;
        }
    }    
}
大卫·拉涅利(David Ranieri)

是的,传递一个指针int **(但3星被认为是不好的样式),我建议从您的函数返回一个分配的变量:

int **createArr(int x, int y)
{
    int **arrPtr;
    int i, j;       //Loop indexes

    arrPtr = malloc(x*sizeof(int*));
    if (arrPtr == NULL) { /* always check the return of malloc */
        perror("malloc");
        exit(EXIT_FAILURE);
    }
    for (i = 0; i < x; ++i) {
        arrPtr[i] = malloc(y*sizeof(int));
        if (arrPtr[i] == NULL) {
            perror("malloc");
            exit(EXIT_FAILURE);
        }
    }
    for (i = 0; i < x; ++i) {
        for (j = 0; j < y; ++j) {
            arrPtr[i][j] = i + j;
        }
    }
    return arrPtr;   
}

使用以下命令调用它:

arr = createArr(x, y);

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++ / Arduino将存储在PROGMEM中的2D数组的指针传递给函数

来自分类Dev

将2d数组传递给C ++中的函数

来自分类Dev

将2D数组传递给c中的函数

来自分类Dev

通过将动态2D数组传递给另一个函数来分配它

来自分类Dev

C ++将动态指针传递给2D数组

来自分类Dev

如何通过将数组传递给 c# 中的函数来返回数组的单个索引?

来自分类Dev

将指向2D VLA的指针作为函数参数传递给C中的行向量

来自分类Dev

将2D数组传递给C函数

来自分类Dev

通过C中的指针传递的2D数组

来自分类Dev

将指针数组传递给接受2D数组的函数

来自分类Dev

无法将2D数组传递给C ++中的辅助函数

来自分类Dev

将2D指针数组传递给给出错误的函数

来自分类Dev

将2D指针数组传递给具有1D指针数组参数的函数

来自分类Dev

通过将指针传递给Go中的函数来获取不同的值

来自分类Dev

将2D数组传递给函数/构造函数

来自分类Dev

将2d数组传递给函数时,单指针和双指针有什么区别?

来自分类Dev

将数组的指针传递给C中的函数

来自分类Dev

C ++将指针数组传递给函数

来自分类Dev

如何在不使用C的指针的情况下通过函数传递2D数组

来自分类Dev

使用JavaScript将2d数组传递给函数

来自分类Dev

将结构的2D数组传递给函数

来自分类Dev

将结构的2D数组传递给函数

来自分类Dev

将2D数组传递给函数

来自分类Dev

如何成功将2D数组传递给函数?

来自分类Dev

在函数中传递2d数组:收到的2d数组是指针数组

来自分类Dev

将指针传递给C ++中的函数

来自分类Dev

C ++将2D数组传递给构造函数(没有已知的转换错误)

来自分类Dev

SWIG:将2d numpy数组传递给C函数f(double a [])

来自分类Dev

SWIG:将2d numpy数组传递给C函数f(double a [])

Related 相关文章

  1. 1

    C ++ / Arduino将存储在PROGMEM中的2D数组的指针传递给函数

  2. 2

    将2d数组传递给C ++中的函数

  3. 3

    将2D数组传递给c中的函数

  4. 4

    通过将动态2D数组传递给另一个函数来分配它

  5. 5

    C ++将动态指针传递给2D数组

  6. 6

    如何通过将数组传递给 c# 中的函数来返回数组的单个索引?

  7. 7

    将指向2D VLA的指针作为函数参数传递给C中的行向量

  8. 8

    将2D数组传递给C函数

  9. 9

    通过C中的指针传递的2D数组

  10. 10

    将指针数组传递给接受2D数组的函数

  11. 11

    无法将2D数组传递给C ++中的辅助函数

  12. 12

    将2D指针数组传递给给出错误的函数

  13. 13

    将2D指针数组传递给具有1D指针数组参数的函数

  14. 14

    通过将指针传递给Go中的函数来获取不同的值

  15. 15

    将2D数组传递给函数/构造函数

  16. 16

    将2d数组传递给函数时,单指针和双指针有什么区别?

  17. 17

    将数组的指针传递给C中的函数

  18. 18

    C ++将指针数组传递给函数

  19. 19

    如何在不使用C的指针的情况下通过函数传递2D数组

  20. 20

    使用JavaScript将2d数组传递给函数

  21. 21

    将结构的2D数组传递给函数

  22. 22

    将结构的2D数组传递给函数

  23. 23

    将2D数组传递给函数

  24. 24

    如何成功将2D数组传递给函数?

  25. 25

    在函数中传递2d数组:收到的2d数组是指针数组

  26. 26

    将指针传递给C ++中的函数

  27. 27

    C ++将2D数组传递给构造函数(没有已知的转换错误)

  28. 28

    SWIG:将2d numpy数组传递给C函数f(double a [])

  29. 29

    SWIG:将2d numpy数组传递给C函数f(double a [])

热门标签

归档