The C++-style casts are pretty nasty, too. Want to un-const something? const_cast it! Want to make that int * a FooObject *? reinterpret_cast it! What could go wrong!
C++ pretends to be a safe language with features like encapsulation. The problem is that it isn't. One bad strcpy later and your "encapsulated" class's data is now "HELLO WORLD\0".
C, on the other hand, makes no effort to pretend that the abstraction being offered is anything other than a big block of RAM and some functions.
(If you want a safe language, use Haskell. Notice how nobody ever needs "unsafeCoerce :: a -> b"?)