The following declaration in C:
int* a, b;
will declare a
as type int*
and b
as type int
. I'm well aware of this trap, but what I want to know is why it works this way. Why doesn't it also declare b
as int*
, as most people would intuitively expect? In other words, why does *
apply to the variable name, rather than the type?
Sure you could write it this way to be more consistent with how it actually works:
int *a, b;
However, I and everyone I've spoken to think in terms of a is of type "pointer to int", rather than a is a pointer to some data and the type of that data is "int".
Was this simply a bad decision by the designers of C or is there some good reason why it's parsed this way? I'm sure the question has been answered before, but I can't seem to find it using the search.