疑问: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
相关产品推荐
相关产品推荐

