12.5 Описание указателей
Если в любых операторах описания типа переменных видим
звездочку * перед именем, то это имя является переменной типа указатель.
Тип перед * - это тип переменной, на которую указывает указатель.
Например, оператор
float * yq ; (12.7)
следует читать следующим образом: "игрек-ку" указывает на вещественную переменную.
Звездочка может стоять в любом месте между типом и именем, но рекомендуется ставить её рядом с типом, т.к. обычный тип со звездочкой можно рассматривать как новый тип - указатель на объект определённого типа.
Например, (12.7) можно записать как float* yq ;
и читать так: yq - это указатель на переменную типа float.
Возможны и другие варианты чтения (12.7):
содержимое по адресу yq есть float или "по адресу yq живет float". Так как
операция * , применённая к адресу, даёт значение, то (12.7) можно записать как
float *yq ;
и понимать следующим образом: значение ( *yq ) имеет тип float.
Имя переменной, с которой связан указатель, появляется после присваивания
указателю её адреса: yq = &b; или float* yq = &b; .
С++ разрешает различные операции с адресными переменными, но
эти операции с адресами выполняются по специальным правилам. Например,
вычислим значение (yq +1) для (12.7), см. также рис. 12.3. Если его
вывести на экран, то получим значение 0064FE05, а не 0064FE02 , как при обычном
сложении. Для указателей операция +1 означает адрес следующей переменной.
Рассмотрим простую аналогию обычного применения указателей.
Я могу сказать, что студент Иванов сейчас невнимателен, а могу указать на него,
и сказать : "Вы сейчас невнимательны" , не называя его имени. Другой пример.
Пусть на столе много предметов и, в том числе чья-то газета. Я могу попросить
убрать газету, а могу показать на неё пальцем и попросить:
"Пожалуйста, уберите это." В обоих примерах второй способ соответствует
указателям, т.к. имя самого объекта не используется.
Фрагмент программы с указателем
. . . . . .
float stpnd = 350.5; float doxod, *adr; //2003 г. - 350.5
adr = &stpnd; doxod = *adr; (12.8)
cout << doxod <<" - это мало!\n" << endl; // . . . . . .
В результате получим на экране: 350.50 - это мало!
- 10.3 Операторы управления
- 10. 4 Оператор мультиветвления switch
- 10.6 Применение функции printf для форматирования
- 11.1 Графические программы
- 11.2 Построение символьного графика
- 11.4 Построение графика в графическом режиме
- 12.1 Передача данных для построения графика в MathCad
- 12.4 Указатели
- 12.5 Описание указателей
- 12.6 Указатели для массивов и строк
- 13.3 Оператор динамического выделения памяти new
- Void main ( ) {
- Void tab( ); };
- Void main ( ) {
- 15.1 Класс объектов, элементы класса
- 15.2 Доступ к элементам класса
- 15.3 Вызов элементов класса
- 15.4 Конструкторы классa
- 15.5 Пример класса Tkplk
- 16.1 Наследование
- 16.2 Полиморфизм
- 16.3 О перегрузке функций и операций
- 17. 1 Среда программирования и библиотека vcl
- 17.2 Консольное приложение в Builder
- При выполнении лабораторных работ в дисплейном классе используется
- 17.5 Вид экрана в builder
- 17.6 Работа с проектом в системе Builder
- 18.1 Редактор кода
- 18.4 Пример запроса, ввода, вывода для Win -программы