Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С++ Страуструп.doc
Скачиваний:
4
Добавлен:
18.04.2019
Размер:
2.72 Mб
Скачать

1.3.3 Указатели и массивы

Массив можно описать так:

char v [ 10 ]; // массив из 10 символов

Описание указателя имеет такой вид:

char * p; // указатель на символ

Здесь [] означает "массив из", а символ * означает "указатель на".

Значение нижней границы индекса для всех массивов равно нулю, поэтому v

имеет 10 элементов: v [ 0 ] ... v [ 9 ]. Переменная типа указатель может

содержать адрес объекта соответствующего типа:

p = & v [ 3 ]; // p указывает на 4-й элемент массива v

Унарная операция & означает взятие адреса.

1.3.4 Условные операторы и циклы

В С++ есть традиционный набор выбирающих операторов и циклов. Ниже

приводятся примеры операторов if, switch и while.

В следующем примере показано преобразование дюйма в сантиметр и

обратно. Предполагается, что во входном потоке значение в сантиметрах

завершается символом i, а значение в дюймах - символом c:

#include <iostream.h>

int main ()

{

const float fac = 2.54;

float x, in, cm;

char ch = 0;

cout << "enter length: ";

cin >> x; // ввод числа с плавающей точкой

cin >> ch // ввод завершающего символа

if ( ch == 'i' )

{ // дюйм

in = x;

cm = x * fac;

}

else if ( ch == 'c' )

{ // сантиметры

in = x / fac;

cm = x;

}

else

in = cm = 0;

cout << in << " in = " << cm << " cm\n";

}

Операция >> ("ввести из") используется как оператор ввода; cin

является стандартным входным потоком. Тип операнда, расположенного справа

от операции >>, определяет, какое значение вводится; оно записывается в

этот операнд.

Оператор switch (переключатель) сравнивает значение с набором

констант. Проверку в предыдущем примере можно записать так:

switch ( ch )

{

case 'i':

in = x;

cm = x * fac;

break;

case 'c':

in = x / fac;

cm = x;

break;

default:

in = cm = 0;

break;

}

Операторы break используются для выхода из переключателя. Все

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

совпадает ни с одной из них, выполняется оператор с меткой default.

Вариант default может и отсутствовать.

Приведем запись, задающую копирование 10 элементов одного массива в

другой:

int v1 [ 10 ];

int v2 [ 10 ];

// ...

for ( int i=0; i<10; i++ ) v1 [ i ] = v2 [ i ];

Словами это можно выразить так: "Начать с i равного нулю, и пока i

меньше 10, копировать i-тый элемент и увеличивать i." Инкремент (++)

переменной целого типа просто сводится к увеличению на 1.