Здравствуйте, ., Вы писали:
.>Массив массивов может быть таким:
.>[1,2,3]
.>[4,5]
.>[6,7,8,9]
.>т.е. по сути это массив указателей, каждый указатель указывает на массив значений.
Опять!
Да сколько можно!Автор: SWW
Дата: 01.10.04
Многомерные массивы не являются массивами указателей! Все их элементы располагаются в непрерывной области памяти. Ну откуда пошло это всеобщее помешательство?
.>Память выделяемая под массив массивов N*M*<размер значения>+N*<размер указателя>.
.>если же двухмерный массив (ака матрица), то он может быть только таким:
.>[1,2,3]
.>[4,5,6]
.>[7,8,9]
.>Реализовываться может с помомщью одномерного массива с вычислением индекса по паре значений.
.>Память выделяемая под двумерный массив N*M*<размер значения>.
Точно так же, как и для массива int a[3][3];
Здравствуйте, Piero2, Вы писали:
B>>Да, и что представляет из себя Q1?
P>в последней версии программы
P>int ****Q1
Ах, вот оно что! И тебя, значит, научили что многомерный массив — это массив указателей. И что, для каждой размерности выделяешь память?
Многомерный массив объявляется так:
int [SIZE_I][SIZE_J][SIZE_K][SIZE_L];
Тогда он будет располагаться в непрерывной области памяти и доступ к нему будет осуществляться одной командой, а не через 4 указателя.
Кстати, если это массив int то что тогда означает запись Q1[i1][i2][i3+Vg][i4+Vg].dh ?
Здравствуйте, SWW, Вы писали:
SWW>Здравствуйте, Piero2, Вы писали:
B>>>Да, и что представляет из себя Q1?
P>>в последней версии программы
P>>int ****Q1
SWW>Ах, вот оно что! И тебя, значит, научили что многомерный массив — это массив указателей. И что, для каждой размерности выделяешь память?
SWW>Многомерный массив объявляется так:
SWW>SWW>int [SIZE_I][SIZE_J][SIZE_K][SIZE_L];
SWW>
SWW>Тогда он будет располагаться в непрерывной области памяти и доступ к нему будет осуществляться одной командой, а не через 4 указателя.
SWW>Кстати, если это массив int то что тогда означает запись Q1[i1][i2][i3+Vg][i4+Vg].dh ?
В последней версии программы int Q1; Q1[i1][i2][i3+Vg][i4+Vg] просто
как объявить такой 4-х мерный массив, если заранее неизвестны SIZE_I,SIZE_J,SIZE_K,SIZE_L?
Здравствуйте, Piero2, Вы писали:
P>помогло — стало в полтора раза быстрее, но остается вопрос:
P>как объявить такой 4-х мерный массив, если заранее неизвестны SIZE_I,SIZE_J,SIZE_K,SIZE_L?
Возможные варианты:
Воспользоваться компилятором gcc — он позволяет задавать размеры массива из переменных.
Индексироваться "вручную" как предлагал г-н "." здесьАвтор: .
Дата: 09.03.07