具有类型或变量的sizeof [英] sizeof with a type or variable
本文介绍了具有类型或变量的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屋!
查看全文