sizeof
работает одним из двух способов: 1) с типом, 2) с выражением.Последний случай идентичен вызову sizeof
для типа выражения.
Таким образом, вы можете написать это:
int a;
char p[sizeof(int)];
char q[sizeof a];
Оба означают одно и то же.
Утилита версии выражения для объявления указателя на динамическую память состоит в том, что вам нужно указать тип только один раз:
complex_type * pc = malloc(sizeof(*pc) * 100); // room for 100 elements
Если позже вы решите изменить тип *pc
, у вас есть толькоизменить код в одном месте.