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

疑问:32位机器中char*指针为何占用8字节?

问题解答:32位机器中char*指针为何占用8字节?

先看你给出的C代码:

#include <stdio.h>

char *c;

int main() {
    printf("size: %ld\n", sizeof(c));
    return 0;
}

首先要理清两个核心点:

  • 你混淆了char和char*:char是字符类型,在32位机器里通常占用1字节;但char*是指针类型,它的作用是存储内存地址,大小和它指向的类型(这里是char)毫无关系。
  • 输出size:8说明你的运行环境根本不是32位的,而是64位环境。指针的大小由CPU的寻址能力和编译环境决定:32位环境下指针占4字节,64位环境下占8字节——不管它指向的是char、int还是其他类型,指针大小只看当前环境的位数。

大概率是你误以为自己在32位机器上运行,但实际要么是用64位编译器编译了代码,要么操作系统本身就是64位的,所以才会输出8字节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:22:14