Скачать презентацию Указатели Указатели Переменные ячейки памяти Скачать презентацию Указатели Указатели Переменные ячейки памяти

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 • Результат: 10 20 30 40 50

Оператор смещения • Эти выражения эквивалентны Оператор смещения • Эти выражения эквивалентны

Инициализация указателей • Иногда может потребоваться инициализация указателей при объявлении: int number; int *p Инициализация указателей • Иногда может потребоваться инициализация указателей при объявлении: int number; int *p = &number; Это выражение эквивалентно: int number; Int *p; p=&number;

Ошибка при инициализации указателя • int number; • int *p; • *p = &number; Ошибка при инициализации указателя • int number; • int *p; • *p = &number; Исключения для массивов:

Арифметика указателей Арифметика указателей

Указатель void • Отсутствие типа • Может использоваться для любого типа данных • Ограничение: Указатель void • Отсутствие типа • Может использоваться для любого типа данных • Ограничение: нет возможности прямого переименовывания даты, на которое оно указывает и поэтому для этого требуется поменять его тип. Например: • void *data; • (char*)data или (int*)data

Указатели NULL Указатели NULL

Задания • • • • • Создайте целые числа x и y Создайте указатель Задания • • • • • Создайте целые числа 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, чтобы переставить значения двух элементов а. Выведите значения двух элементов.