Что является основной функцией sizeof
(Я новичок в C++). НапримерЧто делает sizeof?
int k=7;
char t='Z';
Что sizeof (k)
или sizeof (int)
и sizeof (char)
значит?
Что является основной функцией sizeof
(Я новичок в C++). НапримерЧто делает 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, но вы не можете зависеть от нее.
int означает, что если переменная t задана t = 100, чем sizeof (t) = 1? –
но это покажет мне 4 почему –
'sizeof' не имеет ничего общего с * значением * переменной. Это связано с типом.Он говорит вам, что в вашей системе все переменные типа 'int' требуют 4 байта памяти. –
sizeof() возвращает размер аргумента, переданного ему. sizeof() cpp reference
Чтобы добавить ответ Питера Александера: SizeOf дает размер значения или типа в упаковке размера char
--- char
определяется как наименьшая единица адресацией памяти (на C или C++) для (и, по крайней мере, на C++, по меньшей мере, 8 бит в соответствии со стандартом). Это то, что обычно подразумевается под «байтами» (наименьшая адресуемая единица для данной архитектуры), но никогда не мешает прояснить, и иногда возникают вопросы об изменчивости sizeof (char)
, что, конечно же, всегда 1
.
Байт не обязательно является «наименьшим адресом для заданной архитектуры». На некоторых компьютерах с компакт-диском CDC наименьшее адресуемое устройство представляет собой 16-разрядное слово (адрес 0 - 16 бит, адрес 1 - 16-разрядный), и они относятся к двум половинам в виде байтов. –
@James: Справа: моя точка зрения заключалась в том, что «байт» является неотъемлемо неоднозначным термином, и как бы вы его ни определяли, кто-то где-то будет использовать его по-разному. Интересно о CDC. –
Большинство людей согласятся, что байт составляет 8 бит, и, хотя раньше была какая-то путаница, он стандартизован в настоящее время: IEC 80000-13. Напротив, наименьшая адресуемая единица в машине часто называется словом, и она зависит от машины. Есть 16-, 32-, 64-разрядные архитектуры, но даже в этих контекстах байт по-прежнему будет 8 бит. – Zane
Вам не хватает «вашего персонажа». – Konrad
@ Тайлер Мак-Хенри Сроки очень мало для меня в 0.08 сек. – DumbCoder
@ davit: если вы собираетесь изучать язык программирования, вам стоит попробовать прочитать приличную вступительную книгу на языке, чтобы получить основы, а не просто оставить ее в пробном, ошибка, догадки и бесконечные вопросы о SO. –