Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Изменение размера массива


Автор: Люда 7.5.2002, 11:42
Вот есть такой код:

typedef char STRARR[3][10];

void Func(STRARR d);

void main()
{
STRARR q;
Func(q);
return;
}

void Func (STRARR d)
{
...................

}

При передаче в ф-цию размерность массива d становиться [10][], а не [3][], почему  это происходит и как с этим бороться ?:angry:

Автор: neutrino 7.5.2002, 12:00
В определении напиши, что ты передаешь массив с фиксированной длиной второго порядка. Например так:
Код

void Func(STRARR d[][10]);

Автор: Люда 7.5.2002, 12:07
Но мне надо, чтобы сохранялась первая размерность, это возможно?

Автор: neutrino 7.5.2002, 14:49
Определяешь:
Код

void func(char [3][10]);

Пишешь функцию:
Код

void func(char array[][10]) {
............
}

Здесь уже можно писать [][10].
Если ты хочешь сделать массив строк, то лучше определить как массив указателей на строки.

Автор: podval 8.5.2002, 10:26
Neutrino дело говорит!
Люда! Лучше никогда не гоняй массивы в функцию. Только указатели! Возьми за правило, и все будет получаться.

Автор: Люда 8.5.2002, 13:01
Да с указателями у меня уже все работает, просто у меня есть переменные, являющиеся двумерными массивами и над ними производятся одинаковые действия, вот я и решила не вызывать по сто раз ф-цию, а загнать эти переменные в массив, но ничего хорошего из этого не вышло :(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)