指针的长度在不同的硬件环境下是不同的。
#include <stdio.h>
int main()
{
char* buf0[] = {"aa", "bb", "cc", "dd"};
int* buf1[] = {"aa", "bb", "cc", "dd"};
double* buf2[] = {"aa", "bb", "cc", "dd"};
char* p0;
int* p1;
double* p2;
printf("%d \n", sizeof(buf0) );
printf("%d \n", sizeof(buf1) );
printf("%d \n", sizeof(buf2) );
printf("%d \n", sizeof(p0) );
printf("%d \n", sizeof(p1) );
printf("%d \n", sizeof(p2) );
return 0;
}
以上代码在VC6.0下编写,运行结果如下
不管定义的指针是什么类型,指针所占用的空间固定为4个字节,即32位,而编译环境是32位。
如果在8位cpu下指针长度应该为1个字节,16位下2个字节,32位下4个字节。
如有错误,欢迎指正!!!