Массив из массивов

Здравствуйте, почему при выводе массива из массивов с данными происходят какие-то манипуляции, от чего результат является не тем что ожидаешь, помогите кто знает как исправить может или добавить чего.
Вот результаты отдельно каждого массива:
00000000000001000000 0110111110101 01101101001101 0111001011010011011 01110111010010001 0110110101101111
А вот что получается в общем массиве:
100001111110100010100110100011110000100011001010100010111100100011100100011011010110111 (не правильный результат)

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  int hole1 = 0b0;
  int hole2 = 0b00;
  int hole3 = 0b000;
  int hole4 = 0b000000;
  int PlusMinus = 0b1;

  int word1[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0};

  int TLA = 0b0011;
  int obnovVisot = 0b1;
  int sbros = 0b1;
  int metr = 0b1;
  int PrSk = 0b1;
  int extrop = 0b1;
  int pomeha = 0b00;
  int OGP = 0b10;
  int KOL = 0b01;
  int word2[] = {hole2, TLA, hole3, obnovVisot, sbros, metr, PrSk, extrop, pomeha, OGP, KOL};

  int Vx = 0b0101101;
  int PRS = 0b0;
  int trassa = 0b001101;
  int word3[] = {hole2, PlusMinus, Vx, PRS, hole3, trassa};

  int X = 0b1100101101001;
  int PAuto = 0b1;
  int DostVisot = 0b1;
  int novTrassa = 0b01;
  int word4[] = {hole2, PlusMinus, X, PAuto, hole1, DostVisot, novTrassa};

  int Y = 0b0011011101001;
  int OZ = 0b0;
  int M = 0b1;
  int word5[] = {hole2, PlusMinus, Y, hole1, OZ, hole1, M};

  int Vy = 0b1011010;
  int H = 0b00011011;
  int PrKr = 0b1;
  int P = 0b1;
  int word6[] = {hole2, PlusMinus, Vy, H, PrKr, P};

  int overword[] = {word1, word2, word3, word4, word5, word6};
  
  for (int i = 0; i < 11; i++)
  Serial.print(overword[i], BIN);
  Serial.print("\t\t");
  delay(5000);

  for (int i = 0; i < 20; i++)
    Serial.print(word1[i], BIN);
  Serial.print("\t\t");
  delay(5000);

  for (int i = 0; i < 11; i++)
    Serial.print(word2[i], BIN);
  Serial.print("\t\t");
  delay(5000);

  for (int i = 0; i < 6; i++)
    Serial.print(word3[i], BIN);
  Serial.print("\t\t");
  delay(5000);

  for (int i = 0; i < 7; i++)
    Serial.print(word4[i], BIN);
  Serial.print("\t\t");
  delay(5000);

  for (int i = 0; i < 7; i++)
    Serial.print(word5[i], BIN);
  Serial.print("\t\t");
  delay(5000);

  for (int i = 0; i < 6; i++)
    Serial.print(word6[i], BIN);
  Serial.print("\t\t");
  delay(5000);
}

потому что тип этого массива не int, а указатель на инт

Интересно, что вы вообще ожидали увидеть в этом цикле ?
Каждый элемент массива overword - сам по себе массив, а вы его в оператор принт пихаете.
Массивы так не печатают, ни одномерные, ни двумерныйе

Так я же используя оператор print для того что бы посмотреть результат.

посмотрели?
Вы сейчас выводите на печать адреса ваших массивов, а не их содержимое.
Причем зачем-то преобразуете адреса в двоичный формат… видимо чтобы было еще “нагляднее” :slight_smile:

1 лайк

А как вывести содержимое?

Внутри цикла по массивам сделать цикл по элементам.
Только вам будет очень сложно, потому что у вас каждый массив имеет свою длину.

Вы лучше скажите, зачем вам вся эта путаница?

Это нужно для создания 120 битного слова, который состоит из шести 20 битных слов, в которых разное количество переменных.

Тогда вам вообще не подходит двумерный массив. Его свойство что он “прямоугольный” - то есть у него в каждой строке ОДИНАКОВОЕ число клеток.
Если у вас разное число элементов в массивах, то либо выравняйте их длину по самому длинному массиву добавлением пустых элементов, или вообще откажитесь от двумерных массивов.

И вообще, по-моему в этой фразе

что-то несуразное. Слово оно или 20 битное(фиксированной длины) или “с разным числом элементов”. Выберите что-то одно.

почему не взять один одномерный 120битный массив?

Если честно не знаю почему, в программировании я овощ :sweat_smile:, но спасибо за наводящие вопросы, попробую поработать в этом направлении.

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