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

Массивы

m

a

ain ()

{

int a [10];

function(a);

}

10

void function (int var)

{

*var++;

var++;

*var=11;

}

Массивы – один из примеров производных типов данных. Встроенный массив – это

1) совокупность упорядоченных элементов

2) одного и того же типа данных

3) занимающих непрерывную линейную область памяти

4) каждый массив имеет имя. Оно является константным указателем, равным адресу начала массива

5) доступ к отдельным элементам массива может осуществляться по имени массива и индексу или с помощью оператора «*».

Примеры объявления массива

char cAR [10];

int nAr [10][5];

float fAr [2][10][5];

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

const int N=5;

char ar [N];

int N1 =8;

char ar1[N1]; //error

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

  1. Неявная инициализация

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

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

int ar [10][5]; // глобальный

int main ()

{

static char ar2 [100]; // статический

float ar3 [3][4][5]; // локальный

}

  1. Явная инициализация массива

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

1. Явное указание размерности массива

ar [3] ={1,2,3};

А

В

С

0

0

0

0

0

0

0

и

ar1

нициализирующий список может содержать меньше значений, чем количество элементов в массиве, тогда остальные элементы инициализируются нулями

char ar1[10]={‘A’, ‘B’, ‘C’};

Примеры для многомерных массивов:

int nar [3][2]={{1,1},{2,2},{3,3}};

char nstring[2][80] = {«первая строка», «вторая строка»};

2. Можно «опустить» старшую размерность, при этом компилятор самостоятельно вычислит размерность массива

char cAr[]={‘A’, ‘B’, ‘C’};

3. Многомерные массивы могут инициализироваться без указания одной (самое старшей или самой левой) из-за размерности массива в квадратных скобках. Компилятор вычисляет размерность автоматически.

int nAr[][3] = {{0,1,2},{3,4,5},{6,7,8}};

Замечание. Если в многомерном массиве необходимо проинициализировать не все элементы, а только несколько первых, в списке инициализаторов можно использовать фигурные скобки.

int nAr[][3]={{0},{3,4},{6,7,8}};

Массивы и оператор sizeof

1) Для одномерного массива с помощью оператора sizeof на этапе компиляции можно вычислить количество элементов.

сhar ar[]= «vasya pupkin»;

size_t n = sizeoff(ar)/sizeof(char); // число элементов

n=sizeof(ar)/sizeof(ar[0]);

int ar [][3]={1,2,3,4,5,6,7};

size_t n=sizeof (ar)/sizeof(ar [0][0]);// число элементов массива

n=sizeof (ar[0])/sizeof (ar [0][0]); //число столбцов

n=sizeof(ar)/n // число строк