sizeof的作用是什么?

问题描述 投票:16回答:3

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

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

sizeof (k)sizeof (int)sizeof (char)是什么意思?

c++ sizeof
3个回答
54
投票

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


10
投票

添加到Peter Alexander的答案中:sizeof产生的值或类型的大小是sizeof(Foo)的大小的倍数--- char被定义为可寻址的最小内存单元(按C或C ++)给定的体系结构(在C ++中,根据标准至少为8位)。这通常是“字节”(给定体系结构的最小可寻址单元)的含义,但澄清起来从来没有什么坏处,并且偶尔会出现关于char的可变性的问题,当然,该可变性总是sizeof (char)


6
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.