2015-11-23 3 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 целых чисел и два других int. Вы можете узнать, как разбирать такие объявления здесь: 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]); 
} 
Смежные вопросы