Хелпикс

Главная

Контакты

Случайная статья





Инициализация массивов



5.4. Инициализация массивов

В языке С массивы при объявлении можно инициализировать.

Общая форма инициализации массива:

тип имя_массива[размер1] * [размерN] = {список_значений};

В список_значений входят константы, разделенных запятыми. Типы констант должны быть совместимыми с типом массива.

Пример инициализации одномерного массива:

int A[5] = {1, 2, 3, 4, 5};

При этом A[0] = 1, A[1] = 2 и т.д.

При инициализации многомерного массива для улучшения наглядности элементы инициализации каждого измерения можно заключать в фигурные скобки.

Пример инициализации двухмерного массива:

int MN[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};

Массив MN[3][4] – это матрица, у которой 3 строки и 4 столбца.

Для многомерных массивов инициализацию можно также проводить с указанием номера инициализируемого элемента.

Пример инициализации трехмерного массива:

int XYZ[2][3][4] = {{ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} },{ {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} }};

Как видно, массив XYZ содержит два блока, каждый из которых есть матрица размера 3×4, т.е. 3 строки и 4 столбца.

В языке С возможна инициализация безразмерных массивов. Например, для одномерного массива:

int A[ ] = {1, 2, 3, 4, 5};

В этом случае размер массива определяется по количеству значений, используемых при инициализации, т.е. в нашем случае массив А будет состоять из пяти элементов.

В многомерном массиве размер самого левого измерения также можно не указывать. В частности, для инициализации массива MN[3][4] допустима следующая запись:

int MN[][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};

При инициализации многомерных массивов необходимо указать все данные (размерности) за исключением крайней слева размерности. Это нужно для того, чтобы компилятор смог определить длину подмассивов, составляющих массив, и смог выделить необходимую память. Рассмотрим пример безразмерной инициализации для трехмерного массива целых чисел:

int XYZ[][3][4] = {{{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}},{{13, 14, 15, 16},{17, 18, 19, 20},{21, 22, 23, 24}}};

Вывод трехмерного массива на консоль (дисплей) можно выполнить по следующей программе:

#include <stdio.h>#include <conio.h> int main (void) {   int i, j, k;   int XYZ[][3][4] = {{ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }, // 1-й { {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} } }; // 2-й    for (i = 0; i < 2; ++i) { printf("\n");          for (j = 0; j < 3; ++j) { printf("\n");                  for (k = 0; k < 4; ++k)                          printf(" %3d", XYZ[i][j][k]);          }   }   printf("\n\n Press any key: ");   _getch();   return 0; }

Ввод элементов одномерного массива с клавиатуры и вывод их на экран:

#include <stdio.h>#include <conio.h> int main (void) {   int i;   int vector[10];    for (i = 0; i < 10; ++i)    {       printf("vector[%d]=",i+1);      scanf_s("%d",&vecor[i]);   }   for (i = 0; i < 10; ++i)       printf("%6d",vector[i]);    printf("\n\n Press any key: ");   _getch();   return 0; }

Ввод элементов двумерного массива с клавиатуры и вывод их на экран по строкам и столбцам:

#include <stdio.h>#include <conio.h> int main (void) {   int i,j;    float matr[5][10];    for (i = 0; i < 5; ++i)          for (j=0; j<10; j++)   {       printf("matr[%d][%d]=",i+1,j+1);      scanf_s("%f",&matr[i][j]);   }   for (i = 0; i < 5; ++i)       {             for (j=0;j<10;j++)                printf("%6.2f",matr[i][j]);             printf("\n");          }    printf("\n\n Press any key: ");   _getch();   return 0; }


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.