Лексические основы языка C ++. Алфавит и лексемы языка C++. Операторы C++. Массивы и указатели, страница 6

      В круглых скобках после ключевого слова for могут отсутствовать все выражения или любое из них. Отсутствующее выражение заменяется точкой с запятой. Если отсутствует выражение2, то результат проверки всегда истина.

// различные варианты цикла for для вычисления суммы квадратов  первых k натуральных чисел

. . .

for (int i=0, s=0; i<=k;) { int j; j=++i; s+=j*j; }

for (int i=1, s=0; i<=k; i++) s+=i*i;

for (int i=0, s=0; i<=k; s+=++i*i)               //нет тела цикла

. . .

// Бесконечный цикл for

for (;;);

for (;1;);

·  операторы передачи управления

·  оператор перехода по метке

goto идентификатор;

. . .

goto B;

{ int n=10; x=n*x+x; }

B: cout<<”\nx= ”<<x;

·  оператор выхода из функции  (скобки не обязательны)

return (выражение);

·  оператор прерывания

break

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

·  оператор continue

Может использоваться только среди операторов тела цикла. Этот оператор вызывает пропуск оставшейся части итерации внутри цикла и переход к следующей итерации.

. . .

for (s=0.0,k=0,i=0; i<n; i++)

{

 if (x[i]<=0.0) continue;

 k++; s+=x[i];

}

Некоторые сведения об организации ввода вывода в С и C++

Функции ввода и вывода содержатся в файле stdio.h

stdin – объект для ввода

stdout – объект для вывода

-  int putchar (inc c)                          // записывает символ «с» в выходной объект stdout

-  int puts (const char*s)                                     // записывает строку символов в stdout

// форматированный вывод в объект stdout

-  int printf (char * format [, argument, …]     

      char * format - строка форматов

последующие аргументы – выводимые объекты.

            Строка форматов может содержать спецификации преобразования, которые начинаются со знака % со следующими за ним символами преобразования

D, d - десятичное число

С, c – отдельный символ

S, s - строка символов

Х, x – шестнадцатиричное число

О, o– восьмеричное числo

F, f – число с плавающей точкой

Р, p – адрес

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

int C; char S;

printf (“%5d%с\n“,i,s);

-  int getch ()                                      // считывает  символ с клавиатуры без эхо-печати

-  int getchar ()                                 // считывает  символ с клавиатуры с эхо-печатью

-  сhar*gets (char * s)                                           // считывает строку из объекта stdin

// форматированный ввод из объекта stdin

int a, b;

scanf (“%d%d“,&a,&b);                 // &a, &b – адреса переменных

Указатели

Определение типизированного указателя:

type * имя_указателя [инициализатор];

В качестве инициализирующего выражения может быть использовано константное выражение, частным случаем которого является явно заданный адрес участка памяти; указатель, уже имеющий значение; выражение, позволяющее получить адрес объекта.

#include < stdio.h >

char c;

void main ()

{

 char c;

 char * pc;  º char * pc = &c;

 pc = & c;

 for(c=’A’; c<’Z’; c++) printf (”%c”,*pc);

}

            Указатель, не указывающий ни на один из объектов, имеет значение NULL.

char * pc = NULL;

Проверка существования указателя:

 if (pc!=NULL) оператор;   

 if (pc) оператор;       // выражение в скобках истинно, если указатель pc не равен NULL

свободный указатель: void*.

Он также называется родовым, он может указывать на объект любого типа. Пример применения - адресация буферов.

char buffer [1024];

void * bp =&buffer;

// запоминание буфера

// преобразование типов–извлечение информации из буфера