如何将参考传递给2D数组作为参数

时间:2014-10-09 22:11:29

标签: c pointers

我有类似下面的代码,它不起作用并且不断抛出指针错误。我应该怎么做?

#include <stdio.h>
int mat = {{1, 2, 3, 4},
           {1, 4, 3, 2},
           {9, 8, 7, 6}};

int main()
{
  do_something_to_matrix(get_matrix());
}

get_matrix()
{
   return &mat;
}

do_something_to_matrix(int matrix[][4])
{
  //do some stuff
}

1 个答案:

答案 0 :(得分:1)

一个样本

#include <stdio.h>

int mat[][4] = {
    {1, 2, 3, 4},
    {1, 4, 3, 2},
    {9, 8, 7, 6}
};

void do_something_to_matrix(int matrix[][4]);
int (*get_matrix(void))[4];

int main(void){
    do_something_to_matrix(get_matrix());
    return 0;
}

int (*get_matrix(void))[4]{
    return mat;
}

void do_something_to_matrix(int matrix[][4]){
    //do some stuff
    printf("%d\n", matrix[2][1]);//8
}