C语言学习中sizeof遇到的问题,对于char的数组和char *指针,得到的空间大小不同。数组和指向数组的指针得到的结果不同。
问题描述
在win64的环境下,对于str数组来说,得到的是3,指针指向该数组的时候,得到的是8。
#includeint main(){ char str[] = "\\"; char *p = str; int n = 1000; printf("str:%d ",sizeof(str)); printf("p:%d ",sizeof(p)); printf("n:%d ",sizeof(n)); return 0; } //输出 str:3 p:8 n:4
原因分析:
指针类型的size对应不同初始化,数组类型等于其数组的总字节数,指针类型根据不同的系统初始化的大小也不同。
对于char,int等基本类型也是根据系统实现的不同。



