Программирование для карманных компьютеров - Владимир Волков
Шрифт:
Интервал:
Закладка:
Рнструкция statement будет выполняться РґРѕ тех РїРѕСЂ, РїРѕРєР° будет выполняться условие condition. for Рнструкция for предназначена для организации параметрического цикла. Синтаксис этой инструкции приведен ниже.
for (<initialization>]; <condition>]; <increment>]) <statement>
В секции <initialization> выполняется инициализация переменной цикла, в секции <condition> устанавливается условие, а в секции <increment> обуславливается механизм изменения переменной цикла. Блок инструкций <statement> является телом цикла. Пока условие соблюдается <condition>, цикл будет выполняться. Пример инструкции for приведен ниже.
for (int i = 0; i < 10; i++){
sprintf(nn, В«%dВ», i);
strcat(mm, nn);
strcat(mm, " ");
}
breakРнструкция break прерывает выполнение инструкций switch, for, while или do Рё передает управление следующему блоку инструкций.
continueРта инструкция прерывает только текущую итерацию цикла Рё передает управление следующей итерации.
goto Рнструкция goto предназначена для передачи управления РЅР° произвольную инструкцию программы, которая должна быть помечена соответствующей меткой. Рто может быть РІ том числе Рё инструкция объявления имени. Заметим, что метка может быть только локальной, РІ качестве метки может выступать любое необъявленное РґРѕ СЃРёС… РїРѕСЂ РёРјСЏ СЃ двоеточием после него. Синтаксис конструкции приведен ниже.identifier:
…
goto <identifier>;
return Рта инструкция предназначена для выхода РёР· текущей функции Рё возврата РІ то место, откуда эта функция была вызвана. РџСЂРё необходимости РѕРЅР° может возвращать значение. Синтаксис этой конструкции приведен ниже.return [<expression>];
Пример этой инструкции выглядит достаточно просто.
double sqr(double x)
{
return (x*x);
}
Указатели
Указатель – это объект, хранящий РІ себе адрес некоей области памяти, РІ которой располагается переменная или РёРЅРѕР№ объект. РќРѕ РєСЂРѕРјРµ адреса указатель еще хранит РІ себе тип объекта, РЅР° который указывает. Обычно различают указатели РЅР° объекты Рё указатели РЅР° функции. РћР±Р° типа указателей – специальные объекты для хранения адресов памяти. Рти РґРІР° класса имеют различающиеся свойства, назначения Рё правила манипуляции РёРјРё.
Указатели на функции используются для того, чтобы осуществлять доступ к функциям и передавать функции как параметры для других функций. Для указателей на функции нельзя использовать арифметику указателей. Для указателей на объект , напротив, постоянное уменьшение и увеличение являются стандартной операцией для сканирования массивов и других структур данных в памяти.
В С++ указатель всегда имеет тип. Указателя без типа не может существовать. Указатель всегда указывает или на функцию, или на объект какого-то типа. Даже если указатель нетипизирован, он должен иметь тип void*.
Может быть нулевой указатель, который гарантированно указывает на адрес в памяти, который не может указать ни один другой указатель. То есть нулевой указатель ни на что не указывает. Присвоение указателю константы 0 делает его нулевым указателем.
Синтаксис объявления указателя достаточно прост.type *ptr;
После того как указатель будет объявлен, его обязательно нужно инициализировать. В этом случае type может быть любым типом, в том числе и пользовательским. Получившийся указатель будет трактоваться как указатель на объект типа, и после инициализации к этому указателю будут применимы все правила относительно видимости и времени жизни того объекта, на который он указывает.
Также один указатель можно присвоить другому. Правила этой операции достаточно просты и перечислены в следующем списке.
? Указателю типа void можно присвоить любой другой указатель.
? Никакому указателю не может быть присвоен указатель типа void.
? Указатель на объект и указатель на функцию не могут быть присвоены один другому.
? Указатели на объекты одного типа могут быть присвоены один другому.
? Указатели на объекты разного типа могут быть присвоены один другому только при соблюдении некоторых условий.
Помимо этого существует несколько правил арифметики указателей. Они, конечно, не являются обычными переменными, но язык C++ позволяет выполнять некоторые операции, которые приведены в следующем списке.
? Над указателями можно выполнять операцию инкремента и декремента. В этом случае указатель будет увеличиваться на размер объекта, на который он указывает.
? Указатели можно вычитать, но только в том случае, если это указатели на элементы одного и того же массива.
? Указатели можно сравнивать.
Массивы
Синтаксис объявления массива достаточно прост.type declarator <constant-expression>]
Рта конструкция объявляет массив, состоящий РёР· constant-expression элементов типа type. Следующий фрагмент РєРѕРґР° можно рассматривать как пример объявления массивов.
float v[3]; //массив из трех элементов с плавающей точкой v[0], v[1], v[2] char* а[32]; //массив из 32 указателей на char а[0]…а[31]