Одномерные массивы

1. В случае полной инициализации указывается полный список значений в фигурных скобках.

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

Размеры массивов при полной инициализации можно не указывать. Компилятор сам для себя определит эти размеры и выделит соответствующую память. Программист может найти размеры с помощью операции sizeof. Операция возвращает размер всего, что угодно в байтах. В частности, sizeof(A) возвращает размер массива в байтах. Например,

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

int Dim = sizeof(A)/ sizeof(int); // 8/2=4

Лучше писать

int Dim = sizeof(A)/ sizeof(A[0]); // 8/2=4

2. В случае частичной инициализации указывается размер массива и неполный список значений в фигурных скобках. Неинициализированные элементы получают нулевые значения. В случае

int A[4] = {1, 4};

элементы A[0] и A[1] получили значения, а в A[2] и A[3] записаны нули.

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

// int A[4] = {1, 4, 4, 7, 2}; Ошибка

Двумерные массивы

1. В случае полной инициализации указывается полный список значений в фигурных скобках. Каждая строка инициализируется в своих фигурных скобках.

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

{11, 1 4, 1 2, 1 6},

{1, 4, 2, 6}

};

Первый размер массива, то есть количество строк, при полной инициализации можно не указывать.

int A[][4] ={ {1, 4, 2, 6},

{11, 1 4, 1 2, 1 6},

{1, 4, 2, 6}

};

Компилятор сам для себя определит количество по списку инициализации. Программист может найти первый размер с помощью операции sizeof. В частности, sizeof(A) возвращает размер двумерного массива в байтах, а sizeof(A[0]) возвращает размер строки в байтах. Например,

int KolStrok = sizeof(A)/ sizeof(A[0]); // 24/82=3

2. В случае частичной инициализации указываются все размеры массива и неполные списки значений в фигурных скобках.

int A[4][4] ={ { 2, 6},

{ 1 4, 1 2, 1 6},

{6}

};

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

// int A[2][4] = {{1, 4, 4, 7, 2},

{1, 4, 4, 2}}; Ошибка

Внимание. Допускается инициализация двумерного массива одной парой фигурных скобок

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

Но такой способ чреват логической ошибкой в случае частичной инициализации.

Внимание. При определении массива без инициализации все размеры надо указывать явным образом.

Тип имени массива

Для одномерных массивов типом имени массива является тип_элемента_массива[]

Примеры.

Имя А массива char A[20]; имеет тип char[].

Имя В массива float B[10] имеет тип float[].

Для двумерных массивов типом имени массива является тип_элемента_массива[][размер].

В типе имени массива нет информации о первом размере массива – о количестве строк.

Примеры.

Имя А массива char A[10][20]; имеет тип char[][20].

Имя B массива char B[100][20] тоже имеет тип char[][20].

Имя C массива char C[20][10] имеет тип char[][10], отличный от типов А и В.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: