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

更新于: 30-Jul-2019

2k+ 浏览

开启你的 职业生涯

完成课程后即可获得认证

开始
广告