оператор sizeof и многомерная таблица

У меня проблема, потому что я не знаю, как работает оператор sizeof. Может кто-нибудь сказать мне, почему он дает мне 4 в коде ниже?

int tab[2] = {1, 5};
int *filePathTab[1] = {NULL};
filePathTab[0] = tab;
cout << sizeof(filePathTab[0]);

2

Решение

filePathTab[0] имеет int * как его элемент. sizeof int * на твоей машине 4 байта. Если вы хотите знать sizeof что за int * указывает на intВы должны разыменовать указатель:

cout << sizeof(*filePathTab[0]);

Может оказаться, что sizeof int на твоей машине тоже 4 байта.

4

Другие решения

Так как filePathTab[0] имеет тип int* (filePathTab массив указателей, вы рассматриваете нулевой элемент) и размер указателя на int на твоей машине бывает 4 байтов.

2

Sizeof дает вам размер аргумента в байтах. Поскольку указатели на int имеют длину 4 байта (это зависит от системы), вывод sizeof равен 4.

2
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector