function pointer & memory selection

i have read that the 'uint16_t' thing is the cleanest way - just harder to get for beginners?

Why? The name describes the type exactly AND clearly indicates the size.

But, unsigned int is fine, too.