2014-10-09 101 views
0

我有類似於下面的代碼不工作,並一直拋出指針錯誤。我該怎麼做?如何通過參考二維數組作爲參數

#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 
} 
+0

陣列總是通過在C引用傳遞。使用'int * matrix'來獲取它。你必須去引用它來改變它。 – 2014-10-09 22:13:18

回答

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 
}