Объявляю указатель: Код (C++): private byte *_allAddress; Конструктор: Код (C++): MemoryOneWire::MemoryOneWire(OneWire *oneWire, unsigned int *maxCountSensor) { _oneWire = oneWire; _maxCountSensor = maxCountSensor; _allStatusAddress = new byte[_maxCountSensor]; _allAddress = new byte[_maxCountSensor][8]; memset(_allStatusAddress, 0, _maxCountSensor); } Ошибка: sketch\MemoryOneWire.h: In constructor 'MemoryOneWire::MemoryOneWire(OneWire*, unsigned int*)': MemoryOneWire.h:43:44: error: cannot convert 'byte (*)[8] {aka unsigned char (*)[8]}' to 'byte* {aka unsigned char*}' in assignment _allAddress = new byte[_maxCountSensor][8];
указатель на байт и указатель на массив байтов - это разные типы. Причем указатель на массив всегда содержит его размер, так что указатель на массив из трех байт и из 12 байт - тоже разные. Чтобы все правильно работало, ваш параметр _allAddress должен быть описан так: byte(* _allAddress)[_maxCountSensor]; причем размер _maxCountSensor должен быть заранее известен Если же вы принудительно приведете тип указателя на двумерный массив к указателю на byte - он перестанет быть двумерным массивом. то есть вы не сможете обращаться к его элементам как ptr[x][y]
указатель надо делать void, а затем делать явное приведение типов. Как это? Через указатель даже нельзя sizeof() массива определить, не говоря уж об остальном.
не путай указатель на первый элемент (имя массива) и указатель на массив. У них разный тип почитай вот тут: https://www.codeproject.com/Articles/7042/How-to-interpret-complex-C-C-declarations
Информация правильная, обновил информацию об указателях. Я вообще очень люблю указатели, как мне кажется с указателями в Си все очень удобно и просто.
Не к конкретному массиву, а к массиву конкретного размера. разницу чувствуешь? нафига у байта, лонга и флоата указатели разных типов? - чтоб компилятор знал как с ними верно работать
Если у меня в памяти лежат массивы с отображением символов и они все с разными длинами, то мне по такому указателю нифига не передать. А длина массива неизвестна до тех пор, пока к нему не обратишься.
Двумерный массив мне нужен был для удобства, я могу обойтись без него. b707 дал понять, что без заранее известной первой размерности передать двумерный массив в указатель не получиться. (по крайней мере с одним указателем) Так зачем мне дальше что-то мусолить в поисках истины, просто перейду на одномерный массив, а обращаться буду по формуле (sensor * 8) + index. Поэтому статус "Решено".