Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Proga (pechat).docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
90 Кб
Скачать
☆

24. Оператор выбора switch.

switch (<выражение>) {

case <значение1>:

<оператор1>;

break;

case <значение2>:

<оператор2>;

break;

--------------------------------

default:

<оператор>

break;

} Вначале анализируется переменная, далее осуществляется переход к той ветви конструкции, для которой значение переменной или выражения совпадает с указанным константным выражением. Затем выполняется оператор или группа операторов, пока не встретится зарезервированное слово break. Если значение переменной не совпадает ни с одним константным выражением, то управление передается ветви default. После чего выполняется оператор или группа операторов данной ветви.

На практике количество разделов case в операторе switch следует ограничивать, поскольку оно влияет на эффективность программы. Несмотря на то что оператор case является меткой, он используется только внутри оператора switch.

25. Понятие массива, описание массива, размерность массива, размещение в памяти.

Массив – конечная именованная последовательность элементов одного типа. Описание массива: <тип>  <имя>[<размер_массива>]; Доступ к элементам производится по индексу. Он записывается в квадратных кавычках   [ ] и значения индексного выражения никак не контролируется по отношению к размеру массива ни на этапе компиляции, ни на этапе выполнения (может выйти за пределы и компилятор ничего не выдаст). Для всех массивов, кроме динамического, размер должен быть известен на этапе компиляции – задан константою или константным выражением целого типа(int, char…) const n = 10; int mass[n]; int mass2[n*10+15]; Элемент массива имеет индекс от 0 до размерности массива минус один. Например: int array[10]; Индекс имеет диапазон 0..9 int array2[n]; - индекс изменяется от 0 до n-1. Можно сразу задать значения элементам массива: <тип>  <имя>[<размер_массива>] = {<значение эл. через запятую>}; например: char buf[5]={‘a’,’b’,’c’,’d’,’e’}; int kk[3]={1,2,10}; int nol[100]={0} В последнем весь массив nol инициализируеться нулями. Нельзя использовать массивы ссылок. Имя массива по умолчанию считается указателем на первый элемент массива. В памяти элементы массива находятся последовательно.

26. Описание массива имеет вид:

<тип> <имя_массива>[<констное_выражение>];

Каждый эл-т массива имеет индекс от 0 до кол-ва эл-тов -1.

Например: int Mas1[4]; или const int k=4; int Mas[k];

Массив может быть инициализирован сразу же при описании:

int Mas2[3]={1,2,3}; char guf[3}={'R','I','P'};

int mas3[7]={1,2,3};

В последнем случае, когда указаны не все элементы, оставшиеся заполняются нулями.

Инициализация слишком большого числа элементов (больше размера массива) приводит к ошибке:

int buf1[5]={1,2,3,4,5,6,7}; → error: too many initialized

Если размер массива не задан, он определяется длиной списка:

int buf2[]={1,2,3,4,5}; //размер массива 5.

int mass[5]={1,2,3,4,5}; //mass[0]=1; mass[1]=2; ... mass[5]=0

массивы ссылок использовать не разрешается, но массив указателей допустим:

int ix, jx, kx;

int &jar[]={ix, jx, kx}; // приводит к ошибке

int *iar[]={&ix, &jx, &kx}; // правильно

Имя массива по умолчанию считается указателем на первый элемент массива.

arr ↔ & arr [ 0 ]

arr [ i ] ↔ & (arr +i)

int members = sizeof(arr) / sizeof(int);

int a1[100], b1[100];

int * pa=a1; //& a1 [0]

int * pb=b1; //& b1 [0]

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

{* pb ++ = * pa ++;}

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