Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_3.doc
Скачиваний:
4
Добавлен:
03.11.2018
Размер:
84.48 Кб
Скачать

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

Очень важно уметь инициализировать массивы, т.е. присваивать элементам массива некоторые начальные значения. В языке С для этого имеются специальные возможности. Самый простой способ инициализации следующий: в процессе объявления массива можно указать в фигурных скобках список инициализаторов:

float farr[6]={1.1, 2.2, 3.3, 4.0, 5, 6};

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

В другом случае такая форма записи эквивалентна набору операторов:

a[0][0]=1 a[0][1]=2 a[0][2]=3 a[0][3]=4

a[0][4]=5 a[1][0]=6 a[1][1]=7 a[1][2]=8, и т.д.

Многомерные массивы, в том числе и двумерные массивы, можно инициализировать, рассматривая их как массив массивов.

Инициализации

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

и

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

эквивалентны. Количество инициаторов не обязано совпадать с количеством элементов массива. Если инициализаторов меньше, то оставшиеся значения элементов массива не определены.

В то же время инициализации

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

и

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

различны. Соответствующие массивы будут заполнены следующим образом:

В первом случае

Во втором случае

1

2

3

4

5

1

2

3

6

7

8

9

10

4

5

6

7

8

11

9

10

11

В пустых клеточках значения не определены .

Символьные массивы могут инициализироваться как обычный массив:

char str[15]={‘B’, ‘o’, ‘r’, ‘l’, ‘a’, ‘n’, ‘d’, ‘’, ‘C’, ‘+’, ‘+’};

а могут – как строка символов:

char str[15]=”Borland C++”;

Отличие этих двух способов состоит в том, что во втором случае будет еще добавлен нулевой байт. К тому же второй способ короче.

Допускается также объявление и инициализация массива без явного указания размера массива. Например, для выделения места под символьный массив обычным способом

char str[80]=”Это объявление и инициализация массива символов”;

но, необходимо сосчитать количество символов в строке или указать заведомо больший размер массива.

При инициализации массива без указания его размера

char str[ ]=”Это объявление и инициализация массива символов”;

компилятор сам определит необходимое количество элементов массива, включая нулевой байт. Можно объявлять таким же способом массивы любого типа:

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

и многомерные массивы. При объявлении массивов с неизвестным количеством элементов можно не указывать размер только в самых левых квадратных скобках:

int arr[ ][3]={1, 2, 3,

5, 6, 7,

8, 9, 0 };

В качестве примера использования массивов можно привести метод сортировки элементов массива:

#include<stdio.h>

void main( )

{

int arr[10]={1, 23, 4, 7, 8, 0, 1, 9, 4, 7};

int i, j, tmp;

printf("Неотсортированный массив: ");

for(i=0; i<10; i++) printf("%d ", arr[i]);

printf("\n");

for(i=0; i<9; i++)

for(j=0; j<9; j++) if(arr[j] < arr[j+1])

{

tmp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = tmp;

}

printf("");

for(i=0; i<10; i++) printf("%d ", arr[i]);

printf("\n");

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]