Linux. C++. Не могу передать 2х-мерный массив в функцию

12 3
Д
На сайте с 23.06.2006
Offline
51
2106

В main динамически создаю массив.


int **mas_img = new int*[320];
for(int i=0; i<320; i++)
mas_img = new int[50];

далее передаю его по ссылке:

int startx=start_x(width, height, endx+1, &mas_img);

встречаю:

int start_x(int width, int height, int start, int ***mas_img)

printf("The value 0:0 %d\n",*mas_img[0][0]); // все верно

printf("The value 1:1 %d\n",*mas_img[1][0]); // пошел бред

Пишется это все под линухом. Под которым ни разу не писал... Столько траблов уже обошел, а этот никак. Пробовал и статистически создавать массив - тогда вообще мусор всякий передается, а фактически ничего не передается.

В start_x() не понимает размерность массива, больше я ничем это объяснить не могу. Что сделать чтоб работало?

Автомобильная партнерка. () Ты будешь приятно удивлен.
Dreammaker
На сайте с 20.04.2006
Offline
569
#1

Я в сях не особо, точнее почти никак :)

Но мысль пришла может его заполнить сначала нужно, чтобы нормально обрабатывался..? 🙄

Хотя, опять же это что-то типа "пальцем в небо" ибо я больше по пхп :)

Д
На сайте с 23.06.2006
Offline
51
#2

Dreammaker, ну естессно он заполнен! Но зачем засорять топик левой инфой? Там текст кода-то немаленький... И к этой проблеме остальной код не имеет отношения. ;)

Dreammaker
На сайте с 20.04.2006
Offline
569
#3

Ну тогда умываю руки. Это вопрос скорее сюда нужно задавать http://forum.sources.ru

update: Всё таки более подходящий форум :)

Д
На сайте с 23.06.2006
Offline
51
#4

Dreammaker, да ладно... и здесь спецов хватает. Ща вот Миха Кузьмин проснется он асму знает, че для него си++ ;)

Д
На сайте с 23.06.2006
Offline
51
#5

сделал через глобальную переменную...

p.s. чтоб я еще хоть раз сел писать писать на си, да еще и под линухом...........

BigMaK
На сайте с 12.12.2005
Offline
109
#6
Дорвейщик:
сделал через глобальную переменную...

Ну это не серьезно :)

А вообще, при передаче двумерного массива надо указывать размерность во второй ячейке. Или это только в Си...

Сервис мгновенного обратного звонка с сайта (http://www.chaser.ru) - увеличивает телефонную конверсию сайта на 20-80%.
Sadie
На сайте с 11.04.2005
Offline
64
#7

А разве должно быть не *mas_img = new int[50]; ?

Новости без комплексов (http://www.kompleksov.net/) | ЖЖ (http://sad-sadie.livejournal.com/)
ZuS
На сайте с 22.04.2006
Offline
97
ZuS
#8

разве массив объявлен как двумерный?? я вижу только одномерный.

выделяй память под двумерный массив и заполняй его, потом передавай открыв два цикла под строки и столбцы и будет тебе счастье)

Д
На сайте с 23.06.2006
Offline
51
#9
ZuS:
я вижу только одномерный

плохо смотришь. Либо вообще не знаешь Си.

ZuS:
потом передавай открыв два цикла

это еще что за изврат?

Sadie, так выдается ошибка при компиляции...

BigMaK, это при статических массивах.

wilelf
На сайте с 27.06.2005
Offline
322
#10

Господи, что за ересь? Вы пытаетесь объявить в самом начале двумерный массив? С указателем (*) на указатель одномерного? Это как? По-моему, это Вы СИ не знаете. Куда Вам еще в асму лезть? Учитесь, что ли? Читайте методички тогда.

Агентство контекстной рекламы НеВсем ( https://www.nevsem.ru/ ) Пишу платно статьи для Хабра. Мой профиль ( https://habr.com/ru/users/wilelf/ )
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий