РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
61 of 815 menu

Тип ptrdiff_t

Тип ptrdiff_t - это знаковый целочисленный тип, который используется для хранения разности между двумя указателями. Он позволяет корректно работать с отрицательными значениями, когда первый указатель находится дальше второго. Размер типа ptrdiff_t зависит от платформы, но он всегда способен вместить максимально возможную разность указателей. Этот тип объявлен в заголовочном файле <cstddef>.

Синтаксис

ptrdiff_t value; ptrdiff_t value = ptr1 - ptr2;

Пример

Давайте вычислим разность между двумя указателями на элементы массива:

#include <iostream> #include <cstddef> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5}; int* ptr1 = &arr[4]; int* ptr2 = &arr[1]; ptrdiff_t res = ptr1 - ptr2; cout << res << endl; return 0; }

Результат выполнения кода:

3

Пример

Давайте вычислим отрицательную разность, когда первый указатель находится ближе к началу массива, чем второй:

#include <iostream> #include <cstddef> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5}; int* ptr1 = &arr[0]; int* ptr2 = &arr[3]; ptrdiff_t res = ptr1 - ptr2; cout << res << endl; return 0; }

Результат выполнения кода:

-3

Пример

Давайте используем тип ptrdiff_t для обхода массива в обратном порядке:

#include <iostream> #include <cstddef> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5}; int* begin = arr; int* end = arr + 5; for (ptrdiff_t i = end - begin - 1; i >= 0; i--) { cout << arr[i] << " "; } cout << endl; return 0; }

Результат выполнения кода:

5 4 3 2 1

Смотрите также

  • тип size_t,
    который используется для хранения размеров объектов
  • тип int,
    который является базовым целочисленным типом
  • тип long,
    который хранит целые числа увеличенного размера
  • тип pointer,
    который хранит адрес объекта в памяти
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить