Apuntadores Java
Enviado por oscarturbo05 • 26 de Febrero de 2014 • 1.594 Palabras (7 Páginas) • 1.099 Visitas
Declaración e inicialización de variables de apuntador
Las variable de apuntador contienen direcciones de memoria como valores, por lo general, una variable contiene de manera directa un valor específico. En cambio, un apuntador contiene la dirección de una variable que contiene un valor específico. En este sentido, un nombre de variable hace referencia directa al valor, y el apuntador hace referencia a un valor de manera indirecta. Hacer referencia a un valor a través de un apuntador a menudo se le conoce como indirección. Por lo general los diagramas representan a un apuntador como una flecha que apunta desde la variable que contiene la dirección hasta la variable que se localiza en esa dirección de memoria.
Los apuntadores, como cualquier otra variable, se beben declarar antes de que se puedan utilizar. Por ejemplo, la declaración:
int *ptrContador, contador;
Declara la variable ptrContador de tipo int * (es decir, un apuntador a un valor int) y se lee; “ptrContador es un apuntador a int” o “ptrContador apunta a un objeto de tipo int”. Además, la variable contador de la declaración anterior declara para que sea un int, y no un apuntador a int. El * de la declaración se aplica solamente a ptrContador. Cada variable que se declara como apuntador debe ser precedidfa por un asterisco (*). Por ejemplo, la declaración:
double *ptrX, *ptrY;
Indica que tanto ptrX como ptrY son apuntadores a valores doublé. Cuando aparece * en una decalración, no es un operador, sino que la variable que se declara es un apuntador. Los apuntadores se pueden declarar para apuntar a objetos de cualquier tipo de dato.
Los apuntadores deben inicializar cuando se declaran, o en una instrucción de asiganción. Un apuntador se debe de inicu¿ializar en 0, NULL o en una dirección. Un apuntador de valor 0 o NULL apunta a nada. La constante simbólica NULL se define dentro del archivo de encabezado <iostream> (y en muchos otros archivos de encabezado de la biblioteca estándar) para representar el valor 0. Inicializar el apuntador en NULL es equivalente a inicializar un apuntador en 0, pero en C++, se utiliza 0 por convección. Cuando se asigan 0, se convierte en un apuntador del tipo apropiado. El valor 0 es el único valor entero que se puede asiganr de manera directa a una variable de apuntador sin tener que convertir primero el tipo del apuntador.
Operadores para apuntadores
El operador dirección (&) es un operador unario que devuelve la dirección de memoria de su operando. Por ejemplo, suponga las siguientes declaraciones:
int y=5;
int *ptrY;
La instrucción:
ptrY=&y;
Asigna la dirección de la variable y a la variable de apuntador ptrY. Entonces, se dice que ptrY “apunta” a y. Ahora, ptrY hace referencia de manera indirecta al valor de la variable y. Observe que el & de la instrucción de signación anterior no es lo mismo que el & de una declaración de variable de apuntador, el cual siempre es precedido por el nombre del tipo de dato.
El operador *, por lo general denominado operador de indirección u operador de desreferencia, devuelve un sinónimo (es decir, un alias o nombre clave) para al cual el operando de su operador. Por ejemplo
Cadenas de caracteres
Las cadenas de caracteres en Java son objetos de la clase String. Java crea de forma automática un objeto String con el valor del literal. Por ejemplo, la línea de código siguiente visualiza el literal “Fin del proceso.”, para lo cual, Java previamente lo convierte en un objeto String:
System.out.println(“Fin del proceso.”);
Básicamente, una cadena de caracteres se almacena como una matriz unidimensional de elementos de tipo char:
char[] cadena=new char[10];
Igual que sucedía con las matrices numéricas, una matriz unidimensional de caracteres puede ser iniciada en el momento de su definición. Por ejemplo:
char [] cadena={‘a’, ‘b’, ‘c’, ‘d’};
Este ejemplo define cadena como una matriz de caracteres con cuatro elementos (cadena [0] a cadena [3]) y asigna el primer elemento el carácter ‘a’, al segundo carácter ‘b’, al tercero carácter ‘c’ y al cuarto el carácter ‘d’.
Puesto que cada carácter es un entero, el ejemplo anterior podr+ia escribirse también así:
char [] cadena={97, 98, 99, 100};
Cada carácter tiene asociado un entero entre 0 y 65535. Por ejemplo, a la ‘a’ le corresponde el valor 97, a la ‘b’ el valor 98, etc.
Si se crea una matriz de caracteres y se le asigan un número de caracteres menor que su tamaño, el resto de los elementos quedan con el valor ‘\0’ con el que fueron iniciados. Por ejemplo:
char[] cadena=new char[10];
cadena [0]=’a’; cadena[1]=’b’; cadena[2]=’c’; cadena[3]=’d’;
System.out.println(cadena);
La llamada a println permite al hablar visualizar la cadena. Se visualizan todos los caracteres hasta finalizar la matriz, incluidos los nulos (‘\0’).
Como ya se expuso al hablar de las matrices numéricas, un intento de acceder a un valor de un elemento con un subíndice fuera de los límites establecidos al crear
...