Лабораторная работа № 11. Указатели и ссылки
Задание
| Краткие теоретические сведения
| 1. Изучить работу с указателями, выполнив программу, записанную в правой части.
| Указатель - это переменная, значением которой является адрес.
Пусть объявлена переменная а: int a = 0; Указатель на нее: int *ptr; Можно в указатель поместить адрес переменной и напечатать его: ptr = & a; cout < < ptr;
Здесь & - операция получения адреса, * - операция разыменования. Через указатель можно изменять значение, хранящееся по адресу:
int a, *ptr; ptr = & a; a = 10;
cout < < a< < " " < < *ptr< < endl;
*ptr = 20;
cout < < a< < " " < < *ptr< < endl;
Чтобы выполнить арифметические и логические операции над указателями или над объектами, на которые они указывают, необходимо при выполнении каждой операции явно определить тип объектов. При выполнении операций учитывается тип указателей. Например: char *pz; int *pk, *pi; float *pf;
pz++; //значение указателя изменяется на 1
pk++; //значение указателя изменяется на 2
pf++; //значение указателя изменяется на 4
| 2. В правой части записаны фрагменты программ с использованием указателя на константу, константного указателя, константного указателя на константу.
Убрать ошибочные операторы, дописать операторы вывода и выполнить программы на компьютере.
| Указатель на константу
| Константный указатель
| Константный указатель на константу
| { int a = 9;
const int *pa;
pa = & a;
*pa = 12; // ошибка (нельзя менять значение переменной а)
int b = 20;
pa = & b; }
| { int a = 99;
int* const pa = & a;
int b = 44;
pa = & b; // ошибка (константный указатель менять нельзя)
*pa = 12;
}
| { int a = 99;
const int* const pa = & a;
*pa = 33; // ошибка (нельзя менять содержимое переменной а)
int b = 44;
pa = & b; // ошибка (константный указатель на константу менять нельзя)
}
|
| 3. В правой части записана программа суммирования значений а, которые вводятся с клавиатуры, с использованием указателя.
В соответствии со своим вариантом написать программу из лабораторной работы № 8 с использованием указателей.
| #include < iostream>
void main()
{
setlocale (LC_CTYPE, " Russian");
using namespace std;
float a, *pa, s=0; int i;
pa = & a;
for (i = 1; i < = 4; i++)
{
cout< < " Введите a" < < i < < endl;
cin > > a;
s = s + *pa;
}
cout < < " Ответ " < < s < < endl;
}
| 4. Написать программу генерации элементов массива А из случайных чисел и их вывода двумя способами (с указателями и без них).
| Имя массива А без индекса является указателем-константой (не изменяется на протяжении всей работы программы), т. е. адресом первого элемента массива А[0].
Цикл, в котором генерируется и выводится массив A, содержащий sz элементов (от 0 до sz-1), можно реализовать двумя способами (во втором используются указатели):
1. for (i = 0; i < sz; i++) {A[i] = rand()%99; cout < < A[i] < < endl; }
2. for (i = 0; i < sz; i++) { *(A +i) = rand()%99; cout < < *(A + i) < < endl; }
| 5. Изучить отличия ссылок от указателей. Выполнить программы, записанные в правой части.
| Ссылку можно рассматривать как указатель, который всегда разыменовывается. Формат объявления ссылки: тип & имя; где тип - это тип величины, на которую указывает ссылка, & - оператор ссылки, означающий, что следующее за ним имя является именем переменной ссылочного типа, например: int коl; int & pal = kol;
Здесь pal - альтернативное имя для коl const char & CR = '\n '; // ссылка на константу
Использование ссылки
| Использование указателя
| #include < stdio.h>
void main()
{
int V = 1;
printf(" V = %d\n", V);
int & rV = V;
rV = 5;
printf(" V = %d\n", V);
}
| #include < stdio.h>
void main()
{
int V = 1;
printf(" V = %d\n", V);
int & rV = V;
rV = 5; int *pV = & rV;
printf(" V = %d\n", *pV);
}
| Между ссылкой и указателем существуют два основных отличия: ссылка обязательно должна быть инициализирована в месте своего определения; всякое изменение ссылки преобразует не ее, а тот объект, на который она ссылается.
| 6. Выполнить программу, приведенную в правой части, которая разработана с использованием указателей.
Внести изменения с тем, чтобы программа стала содержать ошибки. Исследовать их с помощью отладки.
| Пример. Пусть имеется массив А. Значения элементов массива инициализируются в программе. Удалить элемент с номером, который вводится с клавиатуры.
|
7. В соответствии с вариантом для задачи из последней таблицы лабораторной работы № 10 написать программу с использованием указателей.
В начало практикума
Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...
|
Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...
|
Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...
|
Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...
|
ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...
Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2
Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК.
Решение. Подставим данные задачи в уравнение закона разбавления
К = a2См/(1 –a) =...
Экспертная оценка как метод психологического исследования Экспертная оценка – диагностический метод измерения, с помощью которого качественные особенности психических явлений получают свое числовое выражение в форме количественных оценок...
|
Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...
Этапы творческого процесса в изобразительной деятельности По мнению многих авторов, возникновение творческого начала в детской художественной практике носит такой же поэтапный характер, как и процесс творчества у мастеров искусства...
Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.
|
|