by John
Kopp
Pointers are variables that hold addresses in C and C++.
They provide much power and utility for the programmer to
access and manipulate data in ways not seen in some other
languages. They are also useful for passing parameters into
functions in a manner that allows a function to modify and
return values to the calling routine. When used incorrectly,
they also are a frequent source of both program bugs and
programmer frustration.
Introduction
As a program is executing
all variables are stored in memory, each at its
own unique address or location. Typically, a variable and its
associated memory address contain data values. For instance,
when you declare:
The value "5" is stored in memory and can be accessed by
using the variable "count". A pointer is a special type of variable that
contains a memory address rather than a data value. Just as
data is modified when a normal variable is used, the value of
the address stored in a pointer is modified as a pointer
variable is manipulated.
Usually, the address stored
in the pointer is the address of some other variable.
int *ptr; ptr =
&count // Stores the address
of count in ptr // The unary
operator & returns the address of a variable
|
To get the value that is stored at the memory location in
the pointer it is necessary to dereference the pointer.
Dereferencing is done with the unary operator "*".
int total; total = *ptr;
// The value in the address
stored in ptr is assigned to total |
The best way to learn how to use pointers is by example.
There are examples of the types of operations already
discussed below. Pointers are a difficult topic. Don't worry
if everything isn't clear yet.
Declaration and Initialization
Declaring and initializing
pointers is fairly easy.
int main() { int
j; int
k; int
l; int *pt1;
// Declares an integer
pointer int *pt2;
// Declares an integer
pointer/ float
values[100]; float
results[100]; float *pt3;
// Declares a float
pointer float *pt4;
// Declares a float
pointer
j =
1; k =
2; pt1 = &j;
// pt1 contains the address of the
variable j pt2 = &k;
// pt2 contains the address of
variable k pt3 =
values; //
pt3 contains the address of the first element of
values pt3 =
&values[0]; //
This is the equivalent of the above
statement
return
0; } |
Next page > Dereferencing,
Pointer Arithmetic > Page 1,
2
Previous
Articles