Top: f77 Up: 13 - Statements
Previous: 13,48 - PAUSE Next: 13,50 - PRINT


Section 13,49: POINTER

 The POINTER statement establishes pairs of variables and pointers,
 in which each pointer contains the address of its paired variable.
 Statement format:

    POINTER ((pointer,pointee) [,(pointer,pointee)]...

    pointer  Is a variable whose value is used as the 
             address of the pointee.

    pointee  Is a variable, array, array declarator, record, 
             record array, or record array declarator.

 The following are rules and behavior for the "pointer" argument:

  o  Two pointers can have the same value, so pointer aliasing is
     allowed.

  o  When used directly, a pointer is treated like an integer
     variable.  On RISC systems, a pointer occupies one numeric
     storage unit, so it is a 32-bit quantity (INTEGER*4).

  o  A pointer cannot be pointed to by another pointer; therefore, a
     pointer cannot also be a pointee.

  o  A pointer cannot appear in the following statements:

        ASSIGN       INTRINSIC
        EXTERNAL     PARAMETER

     A pointer can appear in a DATA statement with integer literals
     only.

  o  Integers can be converted to pointers, so you can point to
     absolute memory locations.

  o  A pointer variable cannot be declared to have any other data
     type.

  o  A pointer cannot be a function return value.

  o  You can give values to pointers by using the %LOC built-in
     function to retrieve addresses, or by using malloc(3f) to
     allocate storage for an object.  For example:

        Using %LOC:                   Using malloc:

        integer i(10)                 integer i(10)
        integer i1 (10) /10*10/       pointer (p,i)
        pointer (p,i)                 p = malloc (40)
        p = %loc (i1)                 i(2) = i(2) + 1
        i(2) = i(2) + 1

  o  The value in a pointer is used as the pointee's base address.


 The following are rules and behavior for the "pointee" argument:

  o  A pointee is not allocated any storage.  References to a
     pointee look to the current contents of its associated pointer
     to find the pointee's base address.

  o  A pointee array can have fixed, adjustable, or assumed
     dimensions.

  o  A pointee cannot appear in the following statements:

        AUTOMATIC       PARAMETER
        COMMON          SAVE
        DATA            STATIC
        EQUIVALENCE     VOLATILE
        NAMELIST

  o  A pointee cannot be a dummy argument.

  o  A pointee cannot be a function return value.

  o  A pointee cannot be a record field or an array element.


Top: f77 Up: 13 - Statements
Previous: 13,48 - PAUSE Next: 13,50 - PRINT