4 Указатели.pptx
- Количество слайдов: 19
Указатели
Указатели • Переменные – ячейки памяти, используемые с помощью их идентификаторов. • Поэтому у нас нет необходимости знать их физическое местонахождение. • Ячейки памяти пронумерованы в последовательном порядке
Оператор ссылки - & • После объявления переменной необходимое количество памяти закрепляется к областям памяти. • Для получения физического адреса переменой используем оператор ссылки, который буквально означает «адрес» ted =&andy;
Пример
Оператор разыменовывания(*) • Используя указатель мы может получить значение, которой хранится по данному адресу
Отличие между & и * • & - оператор ссылки и может быть прочитан как «адрес» • * - оператор разыменовывания и может быть прочитан как «значение, хранимое по данному адресу»
Объявление переменных указательных типов Указатель на символ не то же самое что указатель на целое или натуральное число: • int * number; • char * character; • float * greatnumber;
Указатели и массивы • Массивы и указатели тесно связаны: идентификатор массива равен адресу его первого элемента. • Допустим: int numbers [20]; int * p; следующее выражение будет верным p = numbers; Но numbers = p; будет неверным, так как numbersмассив, и используется как константный указатель
• Результат: 10 20 30 40 50
Оператор смещения • Эти выражения эквивалентны
Инициализация указателей • Иногда может потребоваться инициализация указателей при объявлении: int number; int *p = &number; Это выражение эквивалентно: int number; Int *p; p=&number;
Ошибка при инициализации указателя • int number; • int *p; • *p = &number; Исключения для массивов:
Арифметика указателей
Указатель void • Отсутствие типа • Может использоваться для любого типа данных • Ограничение: нет возможности прямого переименовывания даты, на которое оно указывает и поэтому для этого требуется поменять его тип. Например: • void *data; • (char*)data или (int*)data
Указатели NULL
Задания • • • • • Создайте целые числа x и y Создайте указатель на int с названием p 1 Сохраните адрес x в p 1 Используйте p 1 чтобы присвоить значению х 99 Используя cout, выведите значение x Используя cout и указатель p 1, выведите на экран значение Сохраните адрес у в p 1 Используйте p 1 , чтобы присвоить у значение -300 Создайте 2 новые переменные: целое число с названием temp и указатель на целое число с названием p 2 Используйте temp, p 1, и p 2, чтобы переставить значения в x и y Напишите функцию следующего вида: void no. Negatives(int *x). Функция должна принять адрес переменной для целого числа. Если значение этого целого отрицательное, то функция должна установить это на 0 Вызовите функцию дважды: первый рас с адресом х в качестве аргумента , во второй раз с адресом у. Используйте p 2, чтобы отобразить значения х и у. Создайте массив целых чисел с двумя элементами. Назовите массив а. Используйте р2 чтобы инициализировать первый элемент со значением в х Используйте р2 чтобы инициализировать второй элемент со значением в у. Используйте cout , чтобы вывести адрес первого элемента в а. Используйте cout, чтобы вывести адрес второго элемента в а. Используйте p 1, p 2, и temp, чтобы переставить значения двух элементов а. Выведите значения двух элементов.