Передача нединамического 2-мерного массива в функцию в C? - PullRequest
1 голос
/ 01 мая 2011

Как передать двумерные массивы в функцию?
Когда я передаю его, он отображается в отладчике Visual Studio в виде одномерного массива. Проблема заключалась в том, что когда я индексирую sel_col [i], он получает следующий символ вместо следующего слова.

Вот мой прототип функции:

void print_row(char sel_col[MAX_IDENT_LEN][MAX_IDENT_LEN]);

А вот определение моего 2d массива и где я его называю:

char sel_col[MAX_NUM_COL][MAX_IDENT_LEN];
print_row(sel_col); 

Решение 1: Удалить идентификатор первого размера. Не сработало.

void print_row(char sel_col[][MAX_IDENT_LEN]);

Решение 2: Передать его по ссылке в функцию. Не сработало.

    print_row(&sel_col); 

Решение 3: Используйте двойные указатели. Я не хочу идти по этому пути, так как я переписал бы большую часть своего кода.

1 Ответ

1 голос
/ 01 мая 2011

В C двумерные массивы выглядят как одномерные массивы; char[3][3] - это действительно одномерный массив длиной всего 9 элементов, и компилятор выполняет некоторые математические операции, чтобы превратить два меньших индекса в один больший. Ваш прототип функции выглядит правильно. В чем была проблема? Вы получили ошибку компилятора?

...