Этот подход определяет размер целого числа, используя арифметику указателей вместо оператора sizeof().
Решение использует то, как указатели движутся в памяти:
#include <iostream>
using namespace std;
int main() {
int *i;
int *j = i + 1;
cout << "Size of an integer: " << (int)j - (int)i << endl;
}
Когда ты увеличиваешь указатель на 1, он сдвигается на размер своего типа данных в байтах. Например:
i указывает на адрес 1000, то i + 1 указывает на адрес 1004 (если предположить, что целое число занимает 4 байта)4, что и есть размер целого числаint* сдвигает его на размер целого числаsizeof() для ясности и надёжностиИспользуй sizeof() для стандартного, переносимого кода:
cout << "Size: " << sizeof(int) << " bytes" << endl;
Когда ты увеличиваешь указатель int* на 1, адрес памяти смещается ровно на количество байтов, необходимых для хранения целого числа на данной платформе.
Новый — ещё не проверен сообществом
Вы