c语言 实现sizeof功能,C语言简单实现sizeof功能代码
发布日期:2021-06-24 13:15:37 浏览次数:3 分类:技术文章

本文共 652 字,大约阅读时间需要 2 分钟。

sizeof不是函数,而是运算符,C/C++语言编译器在预编译阶段的时候就已经处理完了sizeof的问题,也就是说sizeof类似于宏定义。

下面给出一个sizeof的一个宏定义实现版本

#define sizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))

实验一:

#define mysizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))

int main(){

int a[5]={1,2,3,4,5};

printf("%d",mysizeof(a));

char c=getchar();

return 0;

}

输出:20

不过本文的mysizeof只能对已定义的变量求大小

实验二:

#define mysizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))

int main(){

int a[5]={1,2,3,4,5};

printf("%d",mysizeof(&a));

char c=getchar();

return 0;

}

此时会报语法错误,因为&a并不是我们定义的变量,详细说是&a不是左值,用宏替换后变为((char*)(&&a + 1) - (char*)(&&a)),&&a有语法错误。 我们的版本还是不够强大啊,不知道C语言设计中是怎么实现的sizeof(&a)计算。

转载地址:https://blog.csdn.net/weixin_33045961/article/details/117128394 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c语言sin函数近似值,用泰勒公式求sin(x)的近似值
下一篇:酒店管理系统c语言带注释,酒店管理系统--C语言版.pdf

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月14日 19时07分09秒