最近看到有人讚揚另一位用戶使用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