sizeof
的主要功能是什么(我是C ++的新手)。例如
int k=7;
char t='Z';
sizeof (k)
或sizeof (int)
和sizeof (char)
的含义是什么?
答案 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++