无论是char型指针、int型指针还是其它类型指针在大小上面是相同的,在32位机下面他们的大小都是4个字节。
测试程序:
#include <stdio.h>
int main(void)
{
int *a;
char *b;
float *c;
double *d;
printf(“a = %d\n”,sizeof(a));
printf(“b = %d\n”,sizeof(b));
printf(“c = %d\n”,sizeof©);
printf(“d = %d\n”,sizeof(d));
}
测试结果:
指针大小在内存中的大小与数据类型无关。
但是往char *类型变量中存入4个字节的地址,比如往char a 中存入12345678,再次以a取值时却只能取出0x78,这跟int型与char型在内存中的分布有关。无论是char *还是int *,数据类型都是决定了指针指向的内存中可存放的数据类型,所以12345678具有4个字节,int型自然可以存放,而char类型会提示由于溢出,而只能存入低字节内容。,即78.
运行结果: