sizeof做什么?

dat*_*ili 16 c++ sizeof

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

int k=7;
char t='Z';
Run Code Online (Sandbox Code Playgroud)

什么sizeof (k)sizeof (int)sizeof (char)的意思吗?

Pet*_*der 54

sizeof(x)返回变量或类型x占用的内存量(以字节为单位).它与变量的值无关.

例如,如果您有一个任意类型的数组,T那么该数组的元素之间的距离就是精确的sizeof(T).

int a[10];
assert(&(a[0]) + sizeof(int) == &(a[1]));
Run Code Online (Sandbox Code Playgroud)

在变量上使用时,它等同于在变量的类型上使用它:

T x;
assert(sizeof(T) == sizeof(x));
Run Code Online (Sandbox Code Playgroud)

根据经验,最好尽可能使用变量名,以防类型发生变化:

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.
Run Code Online (Sandbox Code Playgroud)

当在用户定义的类型上使用时,sizeof仍然返回该类型的实例使用的内存量,但值得指出的是,这不必等于其成员的总和.

struct Foo { int a; char b; };
Run Code Online (Sandbox Code Playgroud)

虽然sizeof(int) + sizeof(char)通常5在许多机器上,但sizeof(Foo)可能是8因为编译器需要填充结构以使其位于4字节边界上.情况并非总是如此,很可能在您的机器sizeof(Foo)上将是5,但您不能依赖它.

  • nit:从技术上讲,sizeof不会以字节为单位报告大小,但是不需要任何单位,以便sizeof(char)== 1.几乎是普遍的字节,但理论上至少,不一定. (2认同)

Der*_*urk 9

添加到Peter Alexander的答案:sizeof产生一个值或类型的大小,其大小为a的大小char- char被定义为给定体系结构可寻址的最小内存单位(通过C或C++)(在C++中)至少,根据标准至少8位大小).这通常意味着"字节"(给定体系结构的最小可寻址单元)但它从不会伤害到澄清,并且偶尔会有关于可变性的问题sizeof (char),这当然是永远的1.


Pet*_*erK 6

sizeof()返回传递给它的参数的大小. sizeof()cpp引用