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

char指针数组sizeof运算输出20而非预期15的问题咨询

问题核心原因

你对sizeof的计算对象和char*数组的存储逻辑存在误解:

  • 你定义的char* arrChar[5]是指针数组,数组内存储的不是字符串本身,是5个指向字符串常量首地址的指针。
  • sizeof(数组名)计算的是整个数组本身占用的内存总大小,和数组元素指向的外部存储内容无关。

结果计算逻辑

你运行的环境是32位系统/编译为32位程序:

  • 32位环境下所有指针类型的固定大小是4字节
  • 数组共有5个指针元素,总大小 = 5 * 4 = 20字节,和你得到的输出完全匹配

如果你在64位环境下编译运行,指针大小为8字节,输出结果会是40。

你之前计算的15字节是什么

15字节是5个字符串常量本身的存储总大小,这些字符串存储在程序的静态常量区,arrChar数组只是存储了它们的首地址,并没有把字符串内容拷贝到数组的内存空间里。
如果你想要数组直接存储字符串、得到15字节的结果,可以改为定义二维char数组:

#include <stdio.h>

char arrChar[5][3] = { "hh","jj","kk","zz","xx" };

int main()
{
    printf("size = %d\n", sizeof(arrChar)); // 输出为15
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:15:04