Почему 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 байта.