如何在 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
", my_sizeof(x)); printf("size of y: %d
", my_sizeof(y)); printf("size of z: %d
", my_sizeof(z)); }
输出
size of x: 4 size of y: 1 size of z: 8
广告