如何在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