要求是不使用sizeof,一开始写了个看似可以,但是有问题的方法: long* a = NULL; ; int n = (char*)b - (char*)a; 这个方法等价于sizeof(long),但这其实有问题,在32位编译器上编译得到的代码在64位机器上得到的结果还是n=4,如果是64位编译器那么得到n=8. 上面的思路其实有问题,因为类型的大小依赖于编译器.从另外一个方面来想,指针的大小是机器决定的(有问题),所以如果能够使用sizeof的话,直接根据sizeof(int*)就可以判断