首先,要明白:sizeof是一个运算符,而不是一个函数;在编译期间,计算得到结果: #define my_sizeof(L_Value) ( / (char *)(&L_Value + 1) - (char *)&L_Value / ) 测试程序,可以看看p1和p2的值,然后看看&i + 1的值 # include <stdio.h> #define my_sizeof(L_Value) ( / (char *)(&L_Value + 1) - (char *)&L_Value / ) int main() { int i; char *p1 = &i + 1; char *p2 = &i; printf("%x/n",(int)p1); printf("%x/n",(int)p2); printf("the size of i is %d ",p1 - p2); return 0; }