卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章20188本站已运行347

如何在C中实现自己的sizeof

<?xml encoding="utf-8" ?>

如何在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<p>", my_sizeof(x));
   printf("size of y: %d</p><p>", my_sizeof(y));
   printf("size of z: %d</p><p>", my_sizeof(z));
}</p>

输出

size of x: 4
size of y: 1
size of z: 8
卓越飞翔博客
上一篇: 在Java中是否有类似于C/C++中的typedef的等效方式?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏