Tecnología

Inicio

Cómo utilizar punteros en Fortran

Cómo utilizar punteros en Fortran


Los punteros son un tipo de variable que apunta a una variable en la que se almacenan los datos, en lugar de contener los datos en sí. Los punteros son útiles cuando los datos sean utilizados o manipulados se desconoce anterior al tiempo de ejecución. Esto ocurre cuando las entidades de datos se crean o se destruyen de forma dinámica y no se sabe de antemano cuántos de estos eventos ocurrirán. Punteros son también útiles para la manipulación de listas. Por ejemplo, si tiene una matriz que tiene que ser resuelto, puede ordenar una matriz de punteros a los datos en lugar de los datos en sí. Esto tiene la ventaja de usar mucho menos sobrecarga, ya que los punteros ocupan menos memoria.

Instrucciones

1 Declarar el puntero. La forma general de la declaración de declarar un puntero es:

especificador de tipo, lista de atributos de la lista, PUNTERO :: de variables de puntero.

El especificador de tipo incluye tanto los objetos de tipo intrínseco, así como objetos de tipo derivada. La siguiente declaración es un ejemplo de una declaración de tipo intrínseco:

REAL PUNTERO :: p

mientras:

TIPO (persona), PUNTERO :: q

es un ejemplo de una declaración de tipo derivado. Para declarar un puntero a una matriz, el número de dimensiones necesita ser especificado. Por ejemplo, la siguiente declaración:

REAL DIMENSION (:, :), PUNTERO :: array_1

puede apuntar a una matriz real de dos dimensiones.

2 Declarar las variables que pueden tener un puntero que apunta a ellos. En Fortran, no se le permite apuntar a una variable que no ha dado permiso para estar en la mira. Se da el permiso añadiendo el atributo de destino a la declaración de la variable. Por ejemplo:

REAL OBJETIVO :: c

permite a los punteros para apuntar a esta variable real. Es posible que más de un puntero para señalar a la misma variable.

3 Punto a las variables deseadas mediante el uso de la instrucción de asignación de puntero. Esta declaración es de la forma:

variable de puntero => variable de destino

Por ejemplo, los estados siguientes:

REAL OBJETIVO :: una
REAL PUNTERO :: p
p => a

establecer el puntero P para apuntar a la variable real a.

4 Utilice el puntero en una expresión en lugar de la variable que se está apuntando. Esto se conoce como eliminación de referencias. Eliminación de referencias es donde un puntero es tratado como el objeto que está siendo señaló. Por ejemplo:

REAL PUNTERO :: p, q
REAL OBJETIVO :: x = 2.0, y = 3.0
p => x
q => y
p = q + 1
p = q
p => q

La ecuación p = q + 1 es equivalente a la declaración de x = y + 1, por lo que x toma el valor de 4,0, mientras que p se mantiene sin cambios. Los enunciado p = q conjuntos X al valor de y, y, de nuevo, p mantiene sin cambios. La declaración final p => q establece el p puntero para señalar en y.

5 Romper la asociación de puntos con el destino después de que se ha utilizado, si se desea. Utilice la sentencia anulan para disociar un puntero sin configurar de modo que apunte a otra variable. La sintaxis es la siguiente:

p => x
Anularía (p)

Consejos y advertencias

  • Los punteros también se pueden crear y destruir dinámicamente utilizando las sentencias asignar y DEALLOCATE. Por ejemplo:
  • REAL PUNTERO :: p, q
  • ASIGNAR (p)
  • q => p
  • Anularía (q)
  • DESASIGNAR (p)
  • La declaración anulan rompe la asociación entre q y p antes de que se cancela la asignación p. Si esta asociación no se rompe primero, entonces q habría quedado apuntando a un espacio que ya no era accesible para el programa.