Fun with * and &
Brandon Allbery
allbery at ncoast.UUCP
Mon Jun 23 07:20:40 AEST 1986
Expires:
Quoted from <487 at cubsvax.UUCP> ["Re: C'mon, guys! (Really, pointer pedagogy)"], by peters at cubsvax.UUCP...
+---------------
| Just a quick remark. When I was learning C, I understood that "*pi" meant "the
| contents of pi," but somehow had difficulty conceptualizing why the declaration
| "int *pi;" declares pi as a pointer to an int; that is, I knew it was a
| convention I had to memorize, but it didn't seem mnemonic to me. Then, about
| a month ago, revelation!: read this as "the contents of pi is an integer;"
| which implies, "pi is that which contains (or points to)" an integer. Somehow
| it made thinking about the declarations easier. It's occurred to me that maybe
| everyone else in the world sees this from day 1, but for us dumb folks, having
| this reading pointed out would probably make the learning process easier....
+---------------
Easy: Use the Algol 68 method. (Snide remarks about sh and adb source to
/dev/null or /dev/bourne, please.) Translate * as ``REF''. Then they look
like:
int *pi; -> int REF pi;
x = *pi; -> x = REF pi;
REF is, of course, short for ``reference'', which is just another word for
``pointer''. (Note that ``x = *pi'' is really a DEREFERENCE, since you're not
merely using the ``refrence'' to the interger, but the integer itself. That's
the confusion of C. ``*'' -> ``REF'' is a way to remember it.)
--Brandon
--
ihnp4!sun!cwruecmp!ncoast!allbery ncoast!allbery at Case.CSNET ncoast!tdi2!brandon
(ncoast!tdi2!root for business) 6615 Center St. #A1-105, Mentor, OH 44060-4101
Phone: +01 216 974 9210 CIS 74106,1032 MCI MAIL BALLBERY (part-time)
More information about the Comp.lang.c
mailing list