You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组sizeof(a)与sizeof(&a)的大小差异原因解析

数组与数组地址的sizeof计算解析

先看代码和对应输出:

代码:

int a[4];
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(&a));

输出:

16
8

关于sizeof(a)的解释

  • 当数组名a作为sizeof的操作数时,不会触发数组到指针的隐式转换,此时a代表整个数组,类型为int[4]。在多数系统中int类型占4字节,所以数组总大小为4 * 4 = 16字节,对应第一个输出结果。

关于sizeof(&a)的解释

  • &a表示整个数组的地址,它的类型是int (*)[4](指向含4个int元素的数组的指针)。但不管指针指向的是什么类型,在64位操作系统中,所有指针的大小都是固定的8字节(32位系统是4字节,这里输出8说明运行环境是64位)。所以sizeof(&a)计算的是这个指针类型本身的大小,结果自然是8。

内容的提问来源于stack exchange,提问作者Dheeraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:30:18