pointer
- указатель.Это размер указателя, который составляет 4 байта в вашей системе.
*pointer
также является указателем.sizeof(*pointer)
также будет 4.
**pointer
- символ.sizeof(**pointer)
будет 1. Обратите внимание, что указатель ** является символом, потому что он определен как char**
.Размер массива new`ed nevers входит в это.
Обратите внимание, что sizeof
является оператором компилятора.Он передается константе во время компиляции.Все, что может быть изменено во время выполнения (например, размер нового массива), не может быть определено с помощью sizeof
.
Примечание 2. Если вы определили это как:
char* array[1];
char** pointer = array;
Теперь pointer
имеет по существу то же значение, что и раньше, но теперь вы можете сказать:
int arraySize = sizeof(array); // size of total space of array
int arrayLen = sizeof(array)/sizeof(array[0]); // number of element == 1 here.