具有类型或变量的sizeof [英] sizeof with a type or variable

查看:36
本文介绍了具有类型或变量的sizeof的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最近看到有人称赞另一个用户使用sizeof var而不是sizeof(Type)。我一直以为那只是一种风格选择。有什么显著的区别吗?例如,带f和ff的线被认为比带g和gg的线更好:

 typedef struct _foo {} foo;

 foo *f = malloc(count * sizeof f);
 foo *g = malloc(sizeof(foo) * count);

 foo **ff = malloc(count * sizeof *ff);
 foo **gg = malloc(sizeof(foo*) * count);

在我看来,第一套只是风格问题。但在第二对行中,额外的秒*很容易被混淆为乘法。

推荐答案

如果更改了变量的类型,则如果变量是参数而不是类型,则不需要更改SIZOF。

关于@icepack的注释:类型与变量名的更改的可能性或可能性不是问题。假设变量名用作sizeof的参数,然后更改。在最好的情况下,重构-重命名操作会更改所有出现的项,并且不会引入错误。在最坏的情况下,缺少sizeof的一个实例,编译器会抱怨,您可以修复它。如果更改了类型,则不可能出现sizeof语句错误。

现在假设类型是sizeof的参数。如果变量的类型被更改,则除了检查之外,没有其他方法来查找与该变量相关的所有SIZOF。您可以搜索,但您将找到相同类型的sizeof的所有不相关用法。如果缺少一个,您将会因为大小不匹配而出现运行时问题,查找起来要麻烦得多。

这篇关于具有类型或变量的sizeof的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆