项目场景:
C语言学习中sizeof遇到的问题,对于char的数组和char *指针,得到的空间大小不同。数组和指向数组的指针得到的结果不同。
问题描述
在win64的环境下,对于str数组来说,得到的是3,指针指向该数组的时候,得到的是8。
#include <stdio.h>
int 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等基本类型也是根据系统实现的不同。