@keldish

Как присвоить значение массиву (с++ )?

typedef byte tAbc[2][2];
typedef tAbc tAbcs[3][3];

tAbcs* Abc;

void .....
Abc = {{{0,1},{1,1},{1,0}},{{....},{....},{....}},{{....},{....},{....}}}

что не так, подскажите
cannot convert '' to 'byte (*)[3][3][2][2] {aka unsigned char (*)[3][3][2][2]}' in assignment
  • Вопрос задан
  • 537 просмотров
Пригласить эксперта
Ответы на вопрос 3
  1. Вы присваиваете значение массива указателю на массив. Это то же самое, что и int* p = 42;.
    Компилятору нужна область памяти, где массив собственно будет храниться. То есть, как минимум, должно быть tAbcs Abc;
  2. Насколько я знаю, в C++ можно только инициализировать массивы таким образом, но не копировать/присваивать. Если хотите, чтобы присваивание работало так, как у вас, используйте std::array.

Ответ написан
Комментировать
@Fil
Вы пытаетесь с помощью aggregate initialization присвоить значения указателю. А еще, вы потеряли одну размерность, что приведет к заполнению нулями части массива.
tAbcs Abc =
	{
		{ { { 0, 0 },{ 0, 0 } },{ { 0, 0 },{ 0, 0 } },{ { 0, 0 },{ 0, 0 } } },
		{ { { 0, 0 },{ 0, 0 } },{ { 0, 0 },{ 0, 0 } },{ { 0, 0 },{ 0, 0 } } },
		{ { { 0, 0 },{ 0, 0 } },{ { 0, 0 },{ 0, 0 } },{ { 0, 0 },{ 0, 0 } } },
	};
Ответ написан
Комментировать
@keldish Автор вопроса
про размерность я знаю, это пример для описания моей проблеммы
я знаю как это сделать в pascal-е, но нужно тоже написать в с++, для Arduino.



type
tabc=array[1..2, 1..2] of byte;
tabcs=array[1..3,1..3] of tabc;

var abcs:^tabcs;

как это реализовать в с++, и присвоить значения этому массиву?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы