Указатель (pointer) — это переменная, которая хранит адрес другой переменной в памяти. По сути, указатель "указывает" на местоположение другого значения.
🚩Основные аспекты указателей
🟠Адрес памяти
Указатель хранит числовое значение, которое представляет адрес ячейки памяти. Этот адрес указывает на начальную позицию объекта, на который ссылается указатель.
🟠Тип данных
Указатели типизированы. Тип указателя указывает на тип данных, который находится по адресу. Это важно для правильной интерпретации данных, хранящихся по адресу.
🚩Объявление и инициализация указателей
🟠Объявление
Указатель объявляется с использованием символа
* после типа данных.int* ptr; // Указатель на целое число
double* dptr; // Указатель на число с плавающей
🟠Инициализация
Указатели могут быть инициализированы адресом существующей переменной с помощью оператора
& (адресной операции).int value = 42;
int* ptr = &value; // ptr хранит адрес переменной
Пример использования указателей
#include <iostream>
int main() {
int value = 42;
int* ptr = &value; // ptr хранит адрес переменной value
std::cout << "Значение value: " << value << std::endl; // Вывод: 42
std::cout << "Адрес value: " << &value << std::endl; // Вывод: Адрес переменной value
std::cout << "Значение, на которое указывает ptr: " << *ptr << std::endl; // Вывод: 42
std::cout << "Адрес, хранимый в ptr: " << ptr << std::endl; // Вывод: Адрес переменной value
// Изменение значения через указатель
*ptr = 10;
std::cout << "Новое значение value: " << value << std::endl; // Вывод: 10
return 0;
}
🚩Операции с указателями
🟠Доступ к значению по указателю
Используя оператор разыменования
*, можно получить или изменить значение, на которое указывает указатель.int value = 42;
int* ptr = &value;
*ptr = 10; // Изменение значения value через
🟠Адресные операции
& оператор используется для получения адреса переменной.* оператор используется для разыменования указателя.🟠Арифметика указателей
Указатели поддерживают арифметические операции, такие как сложение и вычитание, что позволяет перемещаться по массивам.
int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr;
std::cout << *(ptr + 1) << std::endl; // Вывод: 2 (второй элемент массива🚩Типы указателей
🟠Указатель на объект
Указатель, который хранит адрес конкретного объекта.
int value = 42;
int* ptr = &value;
🟠Указатель на массив
Указатель может указывать на первый элемент массива, и арифметика указателей позволяет перемещаться по массиву.
int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr;🟠Указатель на функцию
Указатель, который хранит адрес функции.
void func() {
std::cout << "Hello, World!" << std::endl;
}
void (*funcPtr)() = func;
funcPtr(); // Вызов функции через указательСтавь 👍 и забирай 📚 Базу знаний