Рубрики

Инициализация многомерных массивов в C / C ++

В C / C ++ инициализация многомерных массивов может оставить большинство измерений необязательными. За исключением самого левого измерения, должны быть указаны все остальные измерения.

Например, следующая программа завершится неудачно при компиляции, поскольку два измерения не указаны.

#include<stdio.h>

int main()

{

  int a[][][2] = { {{1, 2}, {3, 4}}, 

                   {{5, 6}, {7, 8}}

                 };  // ошибка

  printf("%d", sizeof(a)); 

  getchar();

  return 0;

}

Следующие 2 программы работают без ошибок.

// Программа 1
#include<stdio.h>

int main()

{

  int a[][2] = {{1,2},{3,4}}; // Работает

  printf("%lu", sizeof(a)); // печатает 4 * sizeof (int)

  getchar();

  return 0;

}

// Программа 2
#include<stdio.h>

int main()

{

  int a[][2][2] = { {{1, 2}, {3, 4}}, 

                     {{5, 6}, {7, 8}}

                   }; // Работает

  printf("%lu", sizeof(a)); // печатает 8 * sizeof (int)

  getchar();

  return 0;

}

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

Рекомендуемые посты:

Инициализация многомерных массивов в C / C ++

0.00 (0%) 0 votes