如何在C中实现您自己的sizeof

要使用sizeof(),我们可以使用变量x来获取值,并使用&x来打印它的地址。现在,如果我们增加&x的值,则它可能以不同的方式增加。如果只增加一个字节,则表示它是字符,如果增加的值是4,则它是int或float等。因此,通过取&x +1与&x之间的差,我们可以得出x的大小。

这里我们将使用宏,因为函数中未定义数据类型。还有一件事,我们正在使用(char *)进行转换,这将告诉我们可以在该位置放置多少个字符类型数据。由于字符占用一个字节的数据。

示例

#include <stdio.h>
#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)
main(void) {
   int x = 10;
   char y = 'f';
   double z = 254748.23;
   printf("size of x: %d\n", my_sizeof(x));
   printf("size of y: %d\n", my_sizeof(y));
   printf("size of z: %d\n", my_sizeof(z));
}

输出结果

size of x: 4
size of y: 1
size of z: 8