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

关于二维数组指针sizeof计算结果的疑问:为何与预期不符?

问题解答

首先得明确int (*p)[4]的本质:这是一个指向包含4个int元素的数组的指针,不是指向单个int的普通指针。

  • 关于sizeof(p):p本身是指针变量,在64位系统里所有指针的大小都是8字节,不管它指向的是单个变量还是数组,所以结果为8完全合理。
  • 关于sizeof(*p):你之前误以为*p是数组的第一个int元素,但实际上*p代表的是p所指向的整个4元素int数组。在常规系统中int占4字节,4个int的总字节数就是4×4=16,所以sizeof(*p)返回16。

举个代码片段帮你区分:

int (*p)[4] = new int[3][4];
// *p 对应第一个完整的4元素数组,也就是 p[0]
cout << sizeof(*p) << endl;       // 输出16,整个数组的大小
cout << sizeof(p[0][0]) << endl;  // 输出4,这才是单个int元素的大小

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:09:21