Pointers and references

Revision as of 14:35, 25 January 2007 by Ce (talk | contribs) (Basic pointer and reference operations in C++)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The goal of this task is

  • To make a pointer or a reference to refer to some given object
  • To access the object referred to through the reference and/or pointer
  • To change the pointer or reference to refer to another object (where applicable)
  • To change the pointer or reference so that it does not refer to any object (where applicable)
  • To get a pointer to the first element of an array (where applicable)
  • To move the pointer to another object in the array, aka pointer arithmetic (where applicable)
  • To access another object in the same array through the pointer (where applicable)
Task
Pointers and references
You are encouraged to solve this task according to the task description, using any language you may know.

C++

With pointers:

The following code creates a pointer to an int variable

 int var = 3;
 int* pointer = &var;
 // or alternatively:
 int* pointer2(&var);

Access the integer variable through the pointer:

 int v = *pointer; // sets v to the value of var (i.e. 3)
 *pointer = 42; // sets var to 42

Change the pointer to refer to another object

 int othervar;
 pointer = &othervar;

Change the pointer to not point to any object

 pointer = 0;
 // or alternatively:
 pointer = NULL;

Get a pointer to the first element of an array:

 int array[10];
 pointer = array;
 // or alternatively:
 pointer = &array[0];

Move the pointer to another object in the array

 pointer += 3; // pointer now points to array[3]
 pointer -= 2; // pointer now points to array[1]

Access another object in the same array through the pointer

 v = pointer[3]; // accesses third-next object, i.e. array[4]
 v = pointer[-1]; // accesses previous object, i.e. array[0]
 // or alternatively
 v = *(pointer + 3); // array[4]
 v = *(pointer - 1); // array[0]

With references:

The following code create a reference to an int variable:

 int var = 3;
 int& ref = var;
 // or alternatively:
 int& ref2(var);

Access the integer variable through the reference

 int v = ref; // sets v to the value of var, that is, 3
 ref = 42; // sets var to 42

References cannot be changed to refer to other objects, and cannot (legally) made to refer to no object.

Get a reference to the first element of an array:

 int array[10];
 int& ref3 = array[0];

Changing the reference to refer to another object of the array is not possible.

Accessing another object of the array through the reference:

 v = (&ref)[3]; // read value of array[3]; however doing this is bad style