6 ms·
As said elsewhere: "Declaration follows use". int *foo; means "foo is a pointer to int". But that's explained different from how it's written. More clearl
by tordek 16y ago
As said elsewhere: "Declaration follows use".
int *foo;
means "foo is a pointer to int". But that's explained different from how it's written. More clearly, you can say that "foo" is an int. Then, doing
int *foo;
foo = 50;
is obviously wrong because "foo" is not an int; however
int *foo;
*foo = 50;
is correct.
Similarly for arrays:
int *foo[50];
means "foo is an array of pointers to int", or "foo[5] is an int".
From there follows that & is the antithesis of , and they negate each other:
int *foo; //foo is a pointer to int.
&*foo; //the address of the contents of foo
foo; // same as above, but shorter.
- ewjordan 16y agoSorry, that didn't make much sense to me - in your first example, you can't say "foo is an int", because it's not, it's a pointer to an int. And in your last example, you can't say "foo[5] is an int", because it's not, it's a pointer to int. In response to the original question, I think the answer is that int *foo; is a common way of writing it because that's the way the compiler resolves it. As mentioned elsewhere, int* foo, bar; is equivalent to int *foo; int bar so treating the star as part of the type can cause problems. But I agree fully - it makes a lot more sense to me to consider the pointer star as a flag on the type, not a modifier to the name. Just one of the many warts on C and C++ that make me happy I have to use them so infrequently... [Edit: formatting, stars were getting swallowed when put inline]
- lmkg 16y ago> [Edit: formatting, stars were getting swallowed when put inline] The same thing happened to the post you're responding to, and that's why it's not making sense to you. The author really meant to say star-foo and star-foo[5], but instead italicized a bunch of text in between.
- ewjordan 16y agoD'oh. Don't know how I didn't realize that, given that my response got messed up so that my "corrected" version read exactly like the one I was confused about... Please disregard everything I said, in that case. :)