TGViewer
C/C++ | Вопросы собесов C/C++ | Вопросы собесов @easy_c_plus · 4.19K subscribers
Post #2422 606
🤔 Что в себе хранит указатель?

Указатель (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(); // Вызов функции через указатель


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
More from @easy_c_plus
  1. Oct 11, 2026🤔 Расскажи о истории умных указателей История умных указателей (smart pointers) в C++ свя…
  2. Oct 10, 2026🤔 Зачем нужен виртуальный деструктор? Виртуальный деструктор необходим, когда класс предп…
  3. Oct 10, 2026🤔 Что знаешь про гарантии безопасности исключений? Гарантии безопасности исключений (Exce…
  4. Oct 9, 2026🤔 Строгая гарантия безопасности Гарантии безопасности исключений в C++ делятся на три уро…
  5. Oct 8, 2026🤔 Выбрасывание исключения из конструктора — это нормально? Да, выбрасывание исключения из…
  6. Oct 8, 2026🤔 Какое преимущество у list перед vector? List обеспечивает быстрые вставки и удаления за…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →