LINUX.ORG.RU

C. Передача «двумерного массива».


0

0

Здравствуйте.

Пишу маленькую программу которая находит определитель n-го уровня. Определитель представляю массивом. И есть необходимость в передаче массива. Причём каждый раз он разного размера. Сначало я думал что пойдёт так:

int func(int a[n][n]){}

Но оказывается нельзя...

Подскажите как это МОЖНО сделать ?


int func(int** a);

Пофиг какого размера, если надо передать размер (n x n),

то

int func(int** a, int n);

anonymous
()
Ответ на: комментарий от anonymous

Если у тебя обычный двумерный массив (например который объявляется int arr[100][100];) то твоя ф-ция должна принимать ОДИНАРНЫЙ указатель:

int func( int *a, int n );

внутри нее для доступа к элементу arr[i][j] нужно обратиться к a[i*n + j]

dilmah ★★★★★
()

всё это правильно, но я автору хочу сказать, что в С НЕТ МАССИВОВ /как самостоятельного типа/ - есть пойнтер на 1 элемент; этим и надо пользоваться.

Pi ★★★★★
()

В каком C нельзя?
В стандартизованных наверняка нельзя, а в GNU - пожалуйста:

int func(int n, int a[n][n]) {
        a[1][1] = 1;
}

int main() {
        int a[2][2];

        func(2, a);
        return 0;
}

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.