Sei sulla pagina 1di 5

QUÉ ES UN PUNTERO

Un puntero es una variable que guarda la dirección en memoria de otra


variable. Por eso decimos que un puntero apunta hacia esa segunda
variable.

Veamos un ejemplo:

En este caso tenemos dos variables, una variable llamada i y otra


variable llamada p.
El sistema reserva en memoria 4 bytes para cada una de esas dos
variables.

La dirección de la variable i comienza en el byte 248.440 y ocupa los 4


bytes siguientes. La variable i ha sido definido como un número entero
(int).

La dirección de la variable p comienza en el byte 248.444 y ocupa los 4


bytes siguientes. La variable p ha sido definida como un puntero.

La variable i contiene el equivalente binario al número cinco, es decir, el


valor de cada uno de los 32 bits de esa variable es

00000000 00000000 00000000 00000101

La variable p contiene el equivalente binario al número 248.440, que


corresponde a la dirección de memoria que el sistema asigna al primero
de los 4 bytes que ocupa la variable i.

No cofundir la dirección de p (248.444) con el contenido de p (la


dirección de i).

LOS PUNTEROS EN EL LENGUAJE C

El lenguaje de programación C es muy flexible y nos permite acceder y


asignar cada uno de estos valores. Por ejemplo

 si queremos asignar el valor 5 a la variable i

int i=5;
 si queremos crear un puntero que no contiene ninguna dirección
todavía

int *p=null;

 si queremos crear un puntero p y asignarle la dirección de i

int *p=&i;

 si queremos sumar 1 al contenido de i lo podemos hacer de tres


formas

i=i+1;

i++;

i=*p+1;

En este último caso *p indica el contenido de la variable a la que apunta


p (es decir i). Recordemos que el valor de p es una dirección de
memoria.

ARITMÉTICA DE PUNTEROS

También podemos operar con el contenido de la variable p, es decir


podemos hacer que p apunte hacia otra dirección

 bien asignándole otra dirección

p=&j;
 bien haciendo que apunte hacia la dirección que guarda otro
puntero

puntero1=puntero2;

 bien moviendo el puntero p de cuatro en cuatro bytes (una


variable de tipo int normalmente ocupa 4 bytes). Esto es lo que se
conoce como aritmética de punteros

p=p+1;

p++;

PUNTEROS EN SAP

En ABAP las direcciones de memoria se llaman reference.

Podemos crear una variable (puntero) que guarda la dirección de


memoria (reference) de otra variable declarandola como tipo REF. Por
ejemplo, podemos declarar un puntero llamado p que de momento no
guarda ninguna dirección en memoria, es decir no apunta hacia ninguna
variable

DATA p TYPE REF TO DATA.

Podemos asignar al puntero p la dirección de otra variable, digamos x

GET REFERENCE OF x INTO p.

Podemos asignar al puntero la dirección de la variable x a través de un


field_symbol, digamos <f>, que ya apunte a la variable x

GET REFERENCE OF <f> INTO p.


Podemos asignar a un puntero la dirección de otro puntero mediante la
instrucción MOVE o el símbolo =

MOVE puntero1 TO puntero2.

puntero1 = puntero2.

Podemos crear un puntero dinámicamente (en tiempo de ejecución)

 primero declaramos el puntero vacío

DATA p TYPE REF TO DATA

 luego creamos el puntero en tiempo de ejecución

CREATE DATA p TYPE i

CREATE DATA p LIKE variable

Para acceder al contenido de la variable hacia la que apunta p


(dereference) utilizamos el símbolo ->*. En este ejemplo la variable y
ahora guarda el contenido de la variable hacia la que apunta p

ASSIGN p->* TO y

Potrebbero piacerti anche