Niedawno zobaczyłem, że ktoś poleca innemu użytkownikowi użycie sizeof var zamiast sizeof (type). Zawsze myślałem, że to tylko wybór stylu. Czy jest jakaś znacząca różnica? Jako przykład, linie F i FF były uważane za lepsze niż liniach gi gg:"C" sizeof z typem lub zmienną
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);
Moim zdaniem, pierwszy zestaw jest tylko kwestia stylu. Ale w drugiej parze linii dodatkową sekundę * można łatwo pomylić z mnożeniem.
Masz błąd w swojej pierwszej linii 'malloc' - powinien to być' sizeof * f'. Ogólny wzór to 'somevar = malloc (count * sizeof * somevar)'. – caf