And it's C; everything bypasses the type system and says "trust me". Memory allocation bypasses the type system and says "trust me".
struct foo* foo = malloc(sizeof foo); // yep, this is definitely the right number of bytes
And it's C; everything bypasses the type system and says "trust me". Memory allocation bypasses the type system and says "trust me".
If you want strong typing (!= static typing), C is not the language you should be using, printf or no printf.