2013-01-19 54 views
3
int main() { 
    int **matrix = { 
     {1, 3, 2, 4}, 
     {3, 2, 4, 5}, 
     {9, 3, 2, 1} 
    }; 

    getchar(); 
} 
  1. 初始化數組爲什麼這會顯示警告信息,如「繞標初始括號」?
  2. 爲什麼我需要用多個指針初始化多維數組? (如果你可以給我一些相當容易理解的解釋在這一個...)
  3. 如果我想要使用int matrix [3] [4]而不是int **矩陣...什麼是一個函數參數,如果我想要傳遞這個數組? int[][]
+2

我建議你閱讀[comp.lang.c FAQ](http://c-faq.com/),特別是第6節。 – pmg

回答

5

int **是指針類型不是數組類型。指針不是數組。使用類型int [3][4]

您不能將數組傳遞給函數,但可以將指針傳遞給數組。函數聲明將指針傳遞到一個數組的int 4將是:

void f(int arr[3][4]); 

void f(int arr[][4]); 

void f(int (*arr)[4]); 

三個聲明是等價的。

+0

或者int [] [4]'... –

+0

指針不是數組,但據我所知,它們指向陣列的開始。但是,問題3依然存在:P – khernik

+0

@khernik查看我的編輯。 – ouah