吾爱程序员:这里有好玩的游戏和软件
当前位置:首页C语言教程 → C语言实现你自己的 sizeof

C语言实现你自己的 sizeof

来源:网络 | 更新时间:2022-01-29 09:15:08
这是一个实现。
#include<stdio.h>
#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)
int main()
{
double x;
printf("%ld", my_sizeof(x));
getchar();
return 0;
}
类型就像宏的局部变量。&type 给出程序中声明的变量 (double x) 的地址,并将其加 1 给出可以存储类型 x 的下一个变量的地址(此处为 addr_of(x) + 8,因为 double 的大小为 8B )。 差异给出的结果是,有多少 x 类型的变量可以存储在该内存量中,对于 x 类型显然为 1(将其递增 1 并取差是我们所做的)。将其类型转换为 char* 并获取差异将告诉我们在给定的内存空间中可以存储多少 char 类型的变量(差异)。由于每个字符只需要 1B 的内存,因此 (内存量)/1 将给出传递给宏的变量类型的两个连续内存位置之间的字节数,从而给出变量的内存量类型 x 需要。 但是您将无法将任何文字传递给该宏并知道它们的大小。 您也可以使用函数而不是宏来实现,但函数实现不能在 C 中完成,因为 C 不支持函数重载,并且 sizeof() 应该接收所有数据类型的参数。 请注意,上面的实现假设字符的大小是一个字节。 时间复杂度: O(1) 空间复杂度: O(1)

最新文章

热点资讯

手游排行榜

CopyRight 2020-2030吾爱程序员

鄂ICP备2021004581号-8

本站资源收集于网络,如有侵权请联系我们:35492删除0109@qq.com