Какова основная функция sizeof
(я новичок в С++). Например,
int k=7;
char t='Z';
Что означают sizeof (k)
или sizeof (int)
и sizeof (char)
?
Какова основная функция sizeof
(я новичок в С++). Например,
int k=7;
char t='Z';
Что означают sizeof (k)
или sizeof (int)
и sizeof (char)
?
sizeof(x)
возвращает объем памяти (в байтах), который занимает переменная или тип x
. Это не имеет ничего общего со значением переменной.
Например, если у вас есть массив некоторого произвольного типа T
, тогда расстояние между элементами этого массива будет точно sizeof(T)
.
int a[10];
assert(&(a[0]) + sizeof(int) == &(a[1]));
При использовании в переменной эквивалентно его использованию по типу этой переменной:
T x;
assert(sizeof(T) == sizeof(x));
Как правило, лучше использовать имя переменной, где это возможно, на всякий случай, если тип изменяется:
int x;
std::cout << "x uses " << sizeof(x) << " bytes." << std::endl
// If x is changed to a char, then the statement doesn't need to be changed.
// If we used sizeof(int) instead, we would need to change 2 lines of code
// instead of one.
При использовании в пользовательских типах sizeof
все еще возвращает объем памяти, используемый экземплярами этого типа, но стоит указать, что это не обязательно равно сумме его членов.
struct Foo { int a; char b; };
Хотя sizeof(int) + sizeof(char)
обычно 5
, на многих машинах sizeof(Foo)
может быть 8
, потому что компилятору необходимо pad out структура так, чтобы она лежала на 4 байтовых границах. Это не всегда так, и вполне возможно, что на вашей машине sizeof(Foo)
будет 5, но вы не можете зависеть от нее.
Чтобы добавить к Peter Alexander ответ: sizeof дает размер значения или типа в кратных размерах char
--- char
, который определяется как наименьшая единица памяти, адресуемая (с помощью C или С++) для данной архитектуры (и, по крайней мере, на С++, как минимум 8 бит в соответствии со стандартом). Это то, что обычно означает "байты" (наименьшая адресуемая единица для данной архитектуры), но никогда не мешает прояснить, и иногда возникают вопросы об изменчивости sizeof (char)
, которая, конечно же, всегда 1
.
sizeof() возвращает размер переданного ему аргумента. sizeof() ссылка cpp