什么是主要功能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,但您不能依赖它.
添加到Peter Alexander的答案:sizeof产生一个值或类型的大小,其大小为a的大小char
- char
被定义为给定体系结构可寻址的最小内存单位(通过C或C++)(在C++中)至少,根据标准至少8位大小).这通常意味着"字节"(给定体系结构的最小可寻址单元)但它从不会伤害到澄清,并且偶尔会有关于可变性的问题sizeof (char)
,这当然是永远的1
.
归档时间: |
|
查看次数: |
47420 次 |
最近记录: |