2015-11-23 36 views
-1

我是C新手,在讀取函數中的矩陣聲明時遇到問題。如何閱讀這個複雜的C聲明?

void foo(int (*array)[][3], int row, int col)

和如何訪問數組元素的功能 - 比如打印它的值。

+1

這是一個無效的語法。也許有一些背景呢? –

+0

這可能是有用的 http://codinghighway.com/2013/12/29/the-absolute-definitive-guide-to-decipher-c-declarations/ –

+0

這可能是一個函數的參數列表;在這種情況下,該函數有三個參數:一個指向3個整數和另外兩個整數數組的數組。您可以在此處瞭解如何解析此類聲明:http://www.codeproject.com/Articles/7042/How-to-interpret-complex-CC-declarations – szczurcio

回答

1
int (*array)[][3] 

聲明array到是指向的2D陣列,其第二個維度是3。實例:

#include <stdio.h> 

void foo(int (*array)[][3], int row, int col) 
{ 
    printf("%d\n", (*array)[row][col]); 
} 

int main() 
{ 
    int array[10][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; 
    foo(&array, 2, 2); 

    return 0; 
} 

輸出:

9 
1

(*array)[][3]是指向2D array.it可以指向一個int數組變量行和3 columns.Here是一個例子:

int main(void) 
{ 
    int arr[3][3] = 
    { 
     {0,0,0}, 
     {1,0,0}, 
     {1,1,0}, 
    }; 
    int (*array)[3][3],row,col; 
    array = &arr; 
    printf("arr[1][0] : %d\n",(*array)[1][0]); 
}