指针变量占用的内存空间大小说明

指针变量占用的内存空间大小根据所使用的操作系统及编译环境而定,指针类型占用的字节数是不同的。

一般而言:

16位机器的代码时,指针占2个字节

32位机器的代码时,指针占4个字节

64位机器的代码时,指针占8个字节

对于一个具体的测试环境,可以用下面的语句精确的知道指针类型占用的字节数:

printf( " %d\n " ,  sizeof(int *) ) ;

测试环境:Ubuntu 64位

查看系统的版本为Ubuntu18.04 64位

struct TRef
{
        char* before;
        char* after;
};  
  
  int main()
  {
        struct TRef r ; 
        printf("sizeof(int) = %d\n", sizeof(int));
        printf("sizeof(r) = %d\n", sizeof( r ) );
        printf("sizeof(r.before) = %d\n", sizeof(r.before));
        printf("sizeof(r.after) = %d\n", sizeof(r.after));
        printf("&r.before = %p\n", &r.before);
        printf("&r.after = %p\n", &r.after);    
  
        return 0;
  }

运行结果:

可见指针变量在64位机器中是占用8个字节的内存空间大小的

同样的程序运行于32位机器时,测试环境windows下Qt creater32位环境下:

在网上看到还有这种言论,真是误人子弟

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值