У меня проблема, потому что я не знаю, как работает оператор sizeof. Может кто-нибудь сказать мне, почему он дает мне 4 в коде ниже?
int tab[2] = {1, 5};
int *filePathTab[1] = {NULL};
filePathTab[0] = tab;
cout << sizeof(filePathTab[0]);
filePathTab[0]
имеет int *
как его элемент. sizeof
int *
на твоей машине 4 байта. Если вы хотите знать sizeof
что за int *
указывает на int
Вы должны разыменовать указатель:
cout << sizeof(*filePathTab[0]);
Может оказаться, что sizeof
int
на твоей машине тоже 4 байта.
Так как filePathTab[0]
имеет тип int*
(filePathTab
массив указателей, вы рассматриваете нулевой элемент) и размер указателя на int
на твоей машине бывает 4 байтов.
Sizeof дает вам размер аргумента в байтах. Поскольку указатели на int имеют длину 4 байта (это зависит от системы), вывод sizeof равен 4.