#include<stdio.h>
int main()
{
int *p;
int q;
printf("%d\n",sizeof(p));
printf("%d",sizeof(q));
return 0;
}
int 类型和指针不是应该一样大吗,为什么一个是8一个是4呢?有没有人可以解释一下这个原因
#include<stdio.h>
int main()
{
int *p;
int q;
printf("%d\n",sizeof(p));
printf("%d",sizeof(q));
return 0;
}
int 类型和指针不是应该一样大吗,为什么一个是8一个是4呢?有没有人可以解释一下这个原因
主要看操作系统,64位系统,这个位数指的是CPU 里面的通用寄存器的数据宽度为64位,也就是说一个地址占二进制位数是64,所以:
sizeof(double *)==sizeof(int *)==sizeof(char *)==64/8==8
32位系统,同理,他的一个地址占32位二进制空间,sizeof(double *)==sizeof(int *)==sizeof(char *)==32/8==4
所以指针大小为8,int 类型为4