Now maybe you're thinking of the abused way of using hungarian notation, and taking it too far, which I don't do. Some abusive users of it have actually gone way too far (I remember Microsoft was a heavy user of it, and went a bit too far with it), and coming up with prefixes for almost every possible type definition, even custom ones! This is not at all what I do. I keep it clean and simple, and this way maintenance is absolutely no issue. I'll prefix pointers with p. If a given identifier is not a pointer, it's not prefixed with p. End of story.
You hit the nail on the head. Looking at the
Wikipedia article, it's the Systems Hungarian I oppose, because I've seen issues with short/int/long and unsigned prefixes (and near/far pointers on code I haven't used but have looked at).
Apps Hungarian looks non-problematic to me.
Your variant, Silicon Hungarian, with just pointers marked for easier human parsing, has nothing objectionable to me.
Some other prefixes that might be useful would be
n for counts,
s for human-readable strings, and
b for binary blobs. The point is, these act like comments: they help humans parse the programmer intent. One could claim that that's not the case with pointers, but because
* and
& are common in expressions, having an additional marker that a variable is a pointer, does help express programmer intent, and probably makes expressions easier to parse correctly for us humans.