LINUX.ORG.RU

C++ Массив из указателей на другой массив или что-то вроде того.

 ,


0

3

Вообщем есть допустим двойной массив чисел. Есть двойной указатель или как это, (две звездочки), вот и нужно что бы эти две звездочки полностью указывали на вот этот вот массив чисел. Для одномерного я эту задачу решил : (https://pastebin.com/vzHWbCuu). Вообщем что я делаю не так, help m3!!

Массив из указателей на другой массив или что-то вроде того.

Я выбираю второе.

orm-i-auga ★★★★★
()

ЯННП, можешь пример привести, хотя бы на массиве из двух элементов, что тебе надо?

DELIRIUM ☆☆☆☆☆
()

**a это указатель на указатель, а у типа int[3][6] нету указателей на строки. Можно либо использовать int *a = &b[0][0]; либо int (*a)[6] = b;.

xaizek ★★★★★
()
Ответ на: комментарий от DELIRIUM

На pastebin код. Видимо хочет обходить элементы двумерного массива через указатели.

xaizek ★★★★★
()
Ответ на: комментарий от annulen

Использовал бы , но мне потом этот массив из указателей нужно в OpenCL , OpenCL знать не знает как я понял про векторы. (Массив из указателей потомучто CL_MEM_USE_HOST_PTR). В чем суть то, Есть допустим 10 массивов из 10 чисел и мне нужно сделать массив из этих массивов(т. е. не копировать значения , а просто в этом массиве вместо значений указатели на эти значения) и послать этот турбо-МАССИВ в аргумент OpenCL функции , а она уже сним разберется!

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

не майся **ью и сделай линейный массив для пересылки на opencl и используй аддресацию вида a[array_no * 10 + index_in_array]

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

но мне потом этот массив из указателей нужно в OpenCL

Впервую очередь вам нужно в основы языка Си.

andreyu ★★★★★
()

Выделять память перед тем как читать/писать в нее? Нет, не слышал. На что у тебя «a» указывает когда ты (int*)&a\[i\] делаешь?

    int ** a;
    int b[3][6];

    for (int i = 0 ; i <3 ;++i)
    {
        int * b_i = (int*)&b[i];
        int * a_i = (int*)&a[i];
        a_i = b_i;
        std::cout << "B " <<&b[i] << std::endl;
        std::cout << "A  " << &a[i] << std::endl;
    }
И что, по-твоему, ты вот здесь «a_i = b_i;» делаешь?

Aswed ★★★★★
()
Последнее исправление: Aswed (всего исправлений: 1)
Ответ на: комментарий от xionovermazes

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

обо всём этом написано в K&R. поэтому настоятельно рекомендуется для начала освоить основы сишечки, а уж потом лезть в плюсы и какие-нибудь OpеnCL'и.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.