最近看到有人赞扬另一位用户使用sizeof var而不是sizeof(type)。我一直认为这只是一种风格选择。有什么重要的区别?作为一个例子,用f和FF线被认为是比G和GG线更好:“C”sizeof与类型或变量
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);
在我看来,第一套仅仅是一个风格问题。但是在第二对线中,额外的第二个*很容易被乘法混淆。
您在第一个`malloc`行有错误 - 它应该是`sizeof * f`。一般模式是`somevar = malloc(count * sizeof * somevar)`。 – caf 2009-12-22 05:13:56