我想知道为什么在下面的程序中sizeof(int)返回一个不同的值sizeof(int*).
这是一个小程序:
int main(){
std::cout<<sizeof(int)<<endl;
std::cout<<sizeof(int*)<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
4
8
Run Code Online (Sandbox Code Playgroud)
直到现在我记得整数指针的大小是4byte(gcc编译器).如何检查指针的正确大小?它依赖于计算机吗?
我正在运行ubuntu 12.04
# lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise
Run Code Online (Sandbox Code Playgroud)
指针的大小是不是常量(标准大小)8个字节.
tem*_*def 16
an int和an 的大小int*完全依赖于编译器和硬件.如果你看到a中使用了8个字节int*,你可能有64位硬件,每个指针转换成8个字节.
希望这可以帮助!
sizeof(char) == 1
没有其他保证(*).
实际上,指针在16位系统上为2,在32位系统上为4,在64位系统上为8.
指针的大小取决于系统、编译器和体系结构。在 32 位系统上,通常为 32 位,而在 64 位系统上,通常为 64 位。
如果您尝试将指针存储为整数以便稍后再次恢复为指针,您可以使用intptr_t足够大的整数类型来容纳(我相信)正常(非函数)指针类型。
| 归档时间: |
|
| 查看次数: |
11843 次 |
| 最近记录: |