sizeof做什么?

时间:2010-07-08 11:46:04

标签: c++ sizeof

sizeof的主要功能是什么(我是C ++的新手)。例如

int k=7;
char t='Z';

sizeof (k)sizeof (int)sizeof (char)的含义是什么?

4 个答案:

答案 0 :(得分:53)

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,但您不能依赖它。

答案 1 :(得分:9)

添加到Peter Alexander的答案:sizeof产生一个值或类型的大小,其大小为char --- char的大小,被定义为可寻址的最小内存单位(通过C或C ++)对于给定的体系结构(并且,至少在C ++中,根据标准至少为8位)。这通常是指“字节”(给定体系结构的最小可寻址单位),但它从不会让人明白,而且偶尔会有sizeof (char)的可变性问题,当然这总是1

答案 2 :(得分:6)

sizeof()返回传递给它的参数的大小。 sizeof() cpp reference

答案 3 :(得分:0)

sizeof是一个编译时一元运算符,它返回数据类型的大小。 例如:

sizeof(int)

将返回int的字节大小。

还请记住,类型大小取决于平台。

查看此页面以获取更多详细信息:sizeof in C/C++