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

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

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

flоаt farr[6]={1.1,2.2,3.3,4.0,5,6};

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

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

а[0][0]=l; a[0][1]=2; a[0][2]=3; a[0][3]=4;

а[0][4]=5; а[1][0]=6; а[1][1]=7; а[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};

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

в первом случае: вo втором случае:

1

2

3

1

2

3

4

5

4

5

6

7

8

6

7

8

9

10

9

10

11

11

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

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

char str[15] {'В', 'о', 'г', /', 'и', 'п', 'd', • ', 'С', •+'. '+'};

Их можно также представить как строку символов:

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

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

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

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

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

При инициализации массива без указания его размера, например, следующим образом:

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

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

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

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

int arr[][3]={1,2,3,5,6,7,8,9,0}

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

#include<stdio.h>

#include<stdlib.h>

//include ''time.h>

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

void main() {

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

int ran[5];

int i,j,tmp,max;

//инициализация элементов массива с помощью случайной функции random

randomize();

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

{ ran[i]=random(100);

printf("ran[%d]= %d\n", i, ran[i]); }

//найдем максимальный элемент массива ran

for(i=0; i<4; i++) {max =(ran[i]<ran[i+l])?ran[i+l]:ran[i];}

ргintf("Максимальный элемент массива ran = %d\n", max);

//Sorting

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

for(i=0; i<10: i++) {printf("%d ", a[i]);}

printf(“\n”);

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

for(j=i;j<10;j++)

if(a[i]<a[j+l])

{tmp = a[i];

a[i]=a[j+1];

a[j+1]= tmp;}

ргintf("Отсортированный массив а: ");

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

Результат выполнения этой программы следующий:

ran[0]=24

ran[1]=75

ran[2]=34

ran[3]=24

ran[4]=90

Maximum is 90

Неотсортированный массив а: 1, 23, 4, 7, 8, 0, 1, 9, 4. 78

Отсортированный массив а: 78, 23, 9, 8, 7. 4. 4, 1, 1, 0

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