CPP-101: Указатели и масиви

Дефиниране на масиви

Масивите са производни типове, които представляват колекция от стойности с еднакъв тип. За даден тип T, типът T[size] представлява типът масив от size елемента от типа T.

Например:

T tarray[10];
int iarray[42];

В ред 1 е дефиниран масив от 10 елемента от типа T. В ред 2 е дефиниран масив от 42 елемента от типа int.

Изразът size, който определя размера на масива, трябва да бъде константен израз. Елементите на масива се индексират с числата от 0 до size-1. Например:

int iarr[42];
iarr[0]=1;
iarr[41]=42;
iarr[42]=43; // грешка!

Индексът на първият елемент на масива iarr е нула (виж ред 2), индексът на последния 42-ри елемент на масива е 41 (виж ред 3). Използването на размера на масива като индекс е грешка (виж ред 4).

Многомерните масиви в C и C++ се дефинират като масиви от масиви. Например, ако е необходим двумерен масив, то декларацията е следната:

int d2[5][10];

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

Началните стойности на елементите на даден масив, могат да се присвоят като се използва списък от стойности.

int iarr[4]={0,1,2,3};
char carr[6]={'H','e','l','l','o','\0'};

Когато се използва инициализация на елементите на масива, то размерът на масива може да се пропусне. В такъв случай размерът на масива се определя от броя на елементите в инициализиращия списък. Например:

int v[]={1,2,3,4};
char ac[]={'a','b','c'};

Дефинираният в ред 1 масив има 4 елемента, а дефинираният в ред 2 – 3 елемента.

Обърнете внимание, че когато размерът на масива е указан явно, инициализирането на масива със списък, съдържащ повече елементи е грешка.

int v[2]={1,2,3}; // Грешка!

Ако в списъка за инициализация на масива броят на елементите е по-малък от размера на масива, то на неинициализираните елементи се присвоява стойност по подразбиране. Следната инициализация

int v[4]={1,2};

е еквивалентна на

int v[]={1,2,0,0};
Публикувано в CPP-101, ООП с етикети , , . Постоянна връзка.

Един коментар по CPP-101: Указатели и масиви

  1. Pingback: CPP-101: Кратък обзор на езика за програмиране C++ | Записки по програмиране

Коментарите са затворени.