首页 > 解决方案 > 指针大小(*variable VS 变量)

问题描述

根据我的理解,在 32 位机器上,指针 sizeof 是 32 位(4 个字节),而在 64 位机器上它是 8 个字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大小时,我得到 4 。为什么呢 ?打印变量和打印*变量有什么区别。

   int *name = NULL;
    int *add = NULL;

    cout<< sizeof (*name) << endl; // Prints 4
    cout << sizeof (add); //Prints 8

标签: c++pointerssizeof

解决方案


*运算符取消引用一个指针。换句话说,它给了你它所指向的东西。

name有类型int *,所以*name有类型int。这意味着sizeof(*name)与 相同sizeof(int),在您的系统上是 4。

同样,add有 type int *。这意味着sizeof(add)与 相同sizeof(int *),在您的系统上是 8。


推荐阅读