I know when I'm giving a
C Programming course that I'll come to the section on pointers and I'll have to slow right down - those extra
* and
& characters take a little explaining and getting used to.
Here are the key points.
A variable declared with a
* in front of it holds a reference to (i.e. the address of) another variable. The type of the OTHER variable is stated inthe declaration. Thus:
float *boat; declares a variable called
boat that holds an ADDRESS, and at that address you'll find a
float variable.
A reference to a variable preceeded with an
& calls up the ADDRESS of a variable rather than its contents - so it's suitable for assigning to a variable of the type described in the previous paragraph.
And a reference to a variable preceeded with an
* calls up the CONTENTS of the address pointed to by the variable - in effect it's the opposite of
&.
Example:
int main(int argc, char ** argv) {
int bill = 25; /* hold int */
int ben = 43;
int *fpotmen; /* holds POINTER TO an int */
fpotmen = &bill; /* ADDRESS OF bill */
*fpotmen = 65 - *fpotmen;
printf("Retires in %d years\n",*fpotmen); /* CONTENTS OF fpotmen */
fpotmen = &ben; /* ADDRESS OF ben */
*fpotmen = 65 - *fpotmen;
printf("Retires in %d years\n",*fpotmen); /* CONTENTS OF fpotmen */
}
WHY?
Because you can assign lots of different variable addresses in turn to a single pointer variable, teh use common code to process a whole lot (array) of data. You'll note that I've illustrated this in the example above by exactly duplicating two of the lines of code, though in a real life application I would prefer not to duplicate but rather to write them into a separate function.
Let's run that code and see when Bill and Ben retire ...
[trainee@daffodil cxx]$ gcc -o panda panda.c
[trainee@daffodil cxx]$ ./panda
Retires in 40 years
Retires in 22 years
[trainee@daffodil cxx]$ (written 2007-04-19 07:09:36)
Associated topics are indexed under
C207 - C and C based languages - Pointers and references
Some other Articles
It can take more that one plus one to get two.Private Java Course - A customer's picturesSpeed Networking - a great evening and how we arranged itTwo by One by WiltshirePointers in CAs I came back from TescoObject Oriented Model - a summary of changes from PHP4 to PHP5Course, right place, right timeGordon Dodge, R.I.P.Helsinki - what comes naturally