Почему sizeof(int) = 4 а sizeof(int*) = 8?

Написал следующий код

#include <windows.h>
#include <stdio.h>

int main()
{
    int Integer = sizeof(int);
    int PtrInteger = sizeof(int*);
    printf("Integer: %d\nPtrInteger: %d\n", Integer, PtrInteger);
    return 0;

}

Вывод следующий

Integer: 4
PtrInteger: 8

Почему так? Почему PtrInteger не равен 4?


Ответы (1 шт):

Автор решения: rusgeli

Потому что в указателе хранится код ячейки памяти, который в зависимости от разрядности системы занимает 32 или 64 бита, т.е. 4 или 8 байт соответственно, о чем вам и говорит sizeof. int же имеет диапазон в чисел от −2 147 483 648 до 2 147 483 647, что соответствует 232 вариантам чисел, которые можно вписать в него, а значит он должен занимать 32 бита, или же 4 байта.

→ Ссылка