sizeof
的主要功能是什么(我是C ++的新手)。例如
int k=7;
char t='Z';
sizeof (k)
或sizeof (int)
和sizeof (char)
是什么意思?
sizeof(x)
返回变量或类型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
结构,使其位于4个字节边界上。并非总是如此,在您的计算机上pad out很可能为5,但您不能依赖它。
添加到Peter Alexander的答案中:sizeof产生的值或类型的大小是sizeof(Foo)
的大小的倍数--- char
被定义为可寻址的最小内存单元(按C或C ++)给定的体系结构(在C ++中,根据标准至少为8位)。这通常是“字节”(给定体系结构的最小可寻址单元)的含义,但澄清起来从来没有什么坏处,并且偶尔会出现关于char
的可变性的问题,当然,该可变性总是sizeof (char)
。
sizeof()返回传递给它的参数的大小。1