Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

«Для продолжения нажмите Enter»

Функцию getchar() можно использовать для приостановки выполнения программы, что может оказаться весьма полезно в некоторых ситуациях. Приведем простой пример. На экран можно одновременно вывес- ти ограниченное количество строк (обычно 25). Если в программе используется длинный ряд инструкций puts(), при выполнении которых надо вывести больше строк, чем может поместиться на экране, первые появившиеся строки информации быстро уйдут за верхний край, и пользователь просто физически не ус- пеет ознакомиться с их содержанием до того, как на этом месте появятся другие.

Справиться с подобной проблемой можно, если разделить длинную последовательность инструкций на блоки, включающие какое-то количество функций puts(), так, чтобы сообщения, появившиеся в результа- те их выполнения, заняли только часть экрана, и в конце каждого блока добавить:

Printf("Для продолжения нажмите Enter"); getchar();

В этом примере функция getchar() приостанавливает выполнение программы до тех пор, пока пользова- тель не нажмет клавишу (рис.5.4). Совершенно необязательно этой клавишей должна быть именно Enter, но нажатие любой другой приведет к появлению на экране соответствующего символа, а это может запу- тать пользователя. Функция getchar() в данном случае не связана ни с какой переменной. Если для про- должения выполнения программы будет нажата, например, клавиша Y, соответствующий символ появится на экране, но не будет присвоен в качестве значения ни одной переменной.

Рис. 5.4. Использование функции getchar() для создания паузы в программе

Оператор получения адреса &

¶a++ae æepcue u+uru æɵuyye+a sneuwpo++ɵu usgawenacwæou "Books-shop".

Pacupocwpa+e+ue, upogaua, uepesauuca ga++on u+uru unu ee ¬acwen 3AMPE[EHª.

O æcex +apyue+uex upoca6a coo6yawa uo agpecy piracy@books-shop.com

Вы уже знаете, что для каждой переменной, используемой в программе, отводится определенный объем памяти, который зависит от типа переменной (см.главу3). Каждый элемент памяти пронумерован от 0 и далее. Если компьютер имеет 2Мегабайта оперативной памяти, элементы будут пронумерованы от 0 до 2097151, как показано на рис.5.5. Эти номера и называют адресами элементов памяти.

Рис. 5.5. Адреса элементов памяти

Когда вы определяете переменные, Си резервирует память для хранения их значений. Например, для це- лочисленной переменной с именем count, Си отведет два элемента (байта) памяти. Первый из них опреде- ляет адрес переменной.

На рис. 5.6 показана переменная count, которая имеет значение 2341. Это значение хранится в элемен- тах, имеющих номера 21560 и 21561, так что адрес переменной count (не значение!)— это число 21560. В качестве адреса достаточно указать номер первого элемента, поскольку Си знает, сколько памяти отво- дится для каждого типа данных. Если count относится к типу int, для нее требуется два элемента памяти, и если первый из них имеет номер 21560, то номер последнего— 21561.

Рис. 5.6. Переменная и ее адрес

При ссылке на переменную (например, при выводе ее значения на экран) используется имя переменной. Можно также сослаться и на ее адрес, если поставить символ амперсанда (&) перед именем переменной, скажем, так: &count. Символ & называется оператором получения адреса. Он указывает Си, что вас в на- стоящий момент интересует адрес элемента памяти, где зарезервировано место для переменной, а не зна- чение переменной, хранящееся в этом элементе. Поэтому, хотя переменная count имеет значение 2341,

&count имеет значение 21560.

Оператор получения адреса не используется со строковыми переменными. Строки определяются с помо- щью специального класса переменных, называемого массив, о котором мы будем говорить в главе 10.

Оператор получения адреса используется при вводе данных с помощью функции scanf().