c++ - 为什么 sizeof(int) 与 sizeof(int*) 不同?

标签 c++ c sizeof

我想知道为什么在下面的程序中 sizeof(int) 返回的值与 sizeof(int*) 不同。

这是小程序:

int main(){
    std::cout<<sizeof(int)<<endl;
    std::cout<<sizeof(int*)<<endl;
    return 0;
}

这是输出:

4
8

直到现在我还记得整数指针的大小是 4byte(gcc 编译器)。如何检查指针的正确大小?是否依赖于计算机?

我正在运行 ubuntu 12.04

# lsb_release -a

Distributor ID: Ubuntu 
Description: Ubuntu 12.04 LTS 
Release:    12.04 
Codename:   precise

指针的大小不是常量(标准大小)8字节。

最佳答案

intint* 的大小完全取决于编译器和硬件。如果您看到 int* 中使用了 8 个字节,则您可能拥有 64 位硬件,每个指针转换为 8 个字节。

希望这对您有所帮助!

关于c++ - 为什么 sizeof(int) 与 sizeof(int*) 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984659/

相关文章:

c++ - 如何在接受用户输入时运行相同的功能

c++ - 仅使用静态多态性的异构容器

C++ uWebSockets 在一个线程中集成事件循环

c++ - 为什么 int 在 64 位编译器上通常是 32 位的?

c++ - 为许多类型创建 "custom typeid"并缓存它们的 sizeof()

c++ - OpenCV cv::findcontours StackOverflow 异常

c++ - 用没有 ‘ ’ 或 ‘\n’ 的 int[10] 写入文件,当我读取它时,有什么不对吗?

在 C 中将十六进制转换为 float ,反之亦然

c - 当前导值为 8-f 时,为什么将 %x 值存储到变量会做一些奇怪的事情?

c++ - '0'、 '\0' 和 0 与 sizeof() 和 strlen() 有什么区别?