I define a typedef
typedef char* charP;
Then I declare a few variables
charP dog, cat, fish;
Are all the variables of type char* or is dog the only char* while cat and fish are of type char?
All of them are of type charP, which is an alias for char *, so yes, they're all pointers.
That said, some people (me included) consider it a bad idea to "hide" the pointer asterisk, since it breaks the symmetry between declaring the variable and accessing it.
You're going to have:
charP a;
*a = '1'; /* What?! It didn't look like a pointer, above?! */
... which causes confusion. Generally, pointers in C are important to keep track of, so hiding what is a pointer and what isn't can lead to trouble.
BSTR). Would be nice if they changed to standard types where possible someday, though...
char *printf("%d %d %d\n", sizeof dog, sizeof cat, sizeof fish);would have given you the answer in an instant.size_tis%zu.z, and I hadn't the answer in an instant, but in several minutes :-}