Russian Qt Forum
Ноябрь 23, 2024, 22:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как передать в функцию указатель на (двумерный) массив?  (Прочитано 15345 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Июль 20, 2011, 17:54 »

Оно и понятно. Массив создался одномерный. Как сделать двумерный?
"Физически" нет 2-мерных, на самом деле все это дела адресной арифметики. Лучше сказать
"как мне сделать так чтобы можно было обращаться"
Код:
BL[0][0] = 1.0;
Способов много, напр

Код
C++ (Qt)
typedef double TPair[2];
TPair * BL = new TPair[kt + 1];
BL[0][0] = 1.0;
 
Да и так уж нужен именно 2-мерный? Спокойно можно все делать с одномерным
Код
C++ (Qt)
double * BL = new double[(kt + 1) * 2];
BL[i * 2 + 0] = 1.0;  // BL[i][0]
BL[i * 2 + 1] = 1.0;  // BL[i][1]
 

Позже переделаю. А пока, для экономии места, написал так.
Хм... нет ничего более постоянного чем временное Улыбающийся Попробуйте снести все написанное к чертовой бабушке и написать "капитально" с продуманными структурами данных. Это совсем не так страшно как на первый взгляд. А цепляясь за имеющийся код Вы намного больше времени потеряете, да и не очень приятно то старье латать. Живите красиво/шикарно  Улыбающийся
Записан
Martiro
Гость
« Ответ #16 : Июль 20, 2011, 20:49 »

Проблема вся в том, что изначально приходится переписывать код написанный на VB. А нет ничего хуже, чем копаться в чужом коде. Да еще и написанном на другом языке с другими возможностями и правилами. Написал бы всё сам изначально, но слишком сложная мат. часть...  Грустный
« Последнее редактирование: Июль 20, 2011, 20:50 от Martiro » Записан
shirushizo
Гость
« Ответ #17 : Июль 21, 2011, 09:09 »

массивы никогда не передаются по значению
Пардон, тупанул, просто сижу по локоть в отладке проекта на бейсике, прошу простить  Обеспокоенный
Записан
lenny
Гость
« Ответ #18 : Август 02, 2011, 08:01 »

Передача двумерного массива в функцию.
В качестве бонуса получаем информацию о количестве элементов:
Код:
template <class T, ptrdiff_t i, ptrdiff_t j>
void f(T (&mas)[i][j])
{
   //mas - массив, i и j - размерность массива
}

int main()
{
    int m[12][27];

    f(m);

    return 0;
}
До компиляции двумерные массивы все-таки существуют.
« Последнее редактирование: Август 02, 2011, 13:45 от lenny » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.194 секунд. Запросов: 23.