В текущем случае sizeof (* пинта) дает sizeof (int), поэтому его возвращаемое значение 4.Но, даже если вы попробуете sizeof (pint), он вернет вам размер указателя.Который, скорее всего, будет равен 4, если у вас 32-битная машина, иначе будет 8, если 64-битная машина.
Теперь вы спросили, почему он не возвращает 4 * 5 = 20. Поскольку пинта указывает нацелочисленный массив.Да, пинта указывает на массив целых чисел, но это не массив.Разница:
- Массив имеет фиксированный размер.Вы можете переопределить это вообще.Хотя указатели могут указывать на любой объект любого размера.
Поскольку оператор sizeof вычисляется во время компиляции, компилятор не может узнать, на какой размер массива указывает этот указатель, и поэтому не может сказать,размер этого объекта и поэтому он всегда возвращает только размер указателя.Теперь вы можете понять, почему в случае указателей компилятор дает размер указателя (т. е. пространство, занимаемое указателем в памяти), а в случае массива - полный размер.