为什么指针变量 的sizeof()打印出来的都是 4;

# include <iostream>

using namespace std;

int main(void)
{
    char c[] = {'h','e','l','l','0','\0'};
    char* a = c;
    cout << sizeof(a);
    return 0;
}

以前听人讲过一点,比如在这里a指向的都是第一个字节的地址,但是为什么打印出来的是4,还是有点懵,来个人好好讲讲撒。

阅读 5.7k
5 个回答

指针所占字节数跟处理器位数有关系,32位处理器就是4个字节,虽然你可能是64位处理器,但要看你是否是64位程序,所以只要int是4个字节,那指针就还是4个字节

指针保存的是一个地址,而不是其他的任何数据。。。所以大小都是固定的

32位下指针是4字节,64位下是8字节。
4字节最多能表示4G。

指针就像门牌号,无论是大别墅也好,小店面也好,在门牌号上并看不出区别。
它代表的仅仅是一个地址,跟地址的内容无关

指针所指向的是地址,作为32位的机子,那么地址是4*8=32位的,也就是32位机子下的指针大小为4;
若作为64位机子,那么地址是8*8=64位,也就是64位机子下面指针大小为8;

如楼上有说,指针就像门牌号,不管是指向多么大面积的房子,门牌号都是4位。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题