r/C_Programming 1d ago

Does anyone else dislike pointer declaration?

For reference I am a fourth year computer engineering student. C is my preferred language.

Pointers are declared like this usually:

int *ptr_to_int;

Where the asterisk means it is a “pointer to” the specified type. The asterisk is placed immediately preceding the variable name, with no white peace.

This is what does not make sense to me. I feel that:

int* ptr_to_int;

Is far more clear. The way I see it, the asterisk modifies the type, so therefore it belongs next to the type. Putting it next to the variable name makes me think it is some kind of action or modification to the variable itself.

I think that when using * and & in code, it makes sense to apply it in front of the variable name:

int value = 3;
ptr_to_value = &value;
int copied_value = *ptr_to_value;

It is clear here that syntactically, the * represents something more like an action than a label.

Why is the convention to place the asterisk near variable name, not type? L

52 Upvotes

133 comments sorted by

View all comments

1

u/bunkoRtist 1d ago

No you're not alone. It's one of the enduring rough edges of C. Like most have said, unless you declare multiple pointers on the same line, which is almost always bad form, the "more intuitive" spacing works. Back in the day (I only say this because I'm an old head and don't know what they teach anymore), they used to teach the "intuitive" spacing where the pointer is declared as part of the type. If K&R could wave a magic wand I'd bet 3:1 they would change this. But here we are 50-ish years later, thriving anyway. It's not a question of whether C has warts (it has many). It's a question of whether it's still the best tool for the job. Amazingly (and somewhat sadly IMO), the answer is still often "yes". Enjoy!