Нет, нет никакой разницы между sizeof(type)
и sizeof(o)
, где объявленный тип o
равен type
.
Могут быть различия, если объявленный тип объекта не является действительно представительным для объекта. Например
char arrayValue[100];
sizeof(arrayValue); // 100 on most systems
char* pointerValue = arrayValue;
sizeof(pointerValue); // 4 on most 32 bit systems
Эта разница возникает из-за того, что sizeof
является конструкцией времени компиляции в C. Следовательно, нет анализа времени выполнения, и компилятор вместо этого смотрит на статически объявленные типы.