Aritmética de apuntadores

Solo disponible en BuenasTareas
  • Páginas : 3 (572 palabras )
  • Descarga(s) : 0
  • Publicado : 28 de diciembre de 2011
Leer documento completo
Vista previa del texto
Aritmética de apuntadores
Como parte de las características fundamentales de los apuntadores, es la habilidad de realizar operaciones matemáticas sobre ellos mismos. Los apuntadores pueden seraumentados, decrementados y modificados usando expresiones matemáticas.
Es posible sumar un entero a un apuntador, es decir, si tenemos un entero "x" y un apuntador "p", podemos escribir "x + p" y obtenerun resultado valido. De hecho, obtendremos otra dirección. Así es como funciona. Digamos que tenemos un arreglo llamado "array" con 100 elementos en el, hacemos que un apuntador "ptr" apunte alinicio de ese arreglo. Si tenemos un segundo apuntador "ptr2" podemos utilizar el signo de igualdad y escribir "ptr2 = ptr1 + 5". La parte "+ 5" es aritmética, así que pensemos: "ptr1" es un apuntador ydigamos que por ejemplo la dirección es exactamente 1000, asi que "ptr1" seria 1000. Si le sumamos 5, obtendremos 1005? La respuesta es no. No obtendremos 1005 y no lo trataremos como una direccióndebido a que "ptr1" es un apuntador a un entero que tiene una longitud de 4 bytes. Este código no indica que traslademos 5 bytes sino que traslademos 5 enteros y que tomemos la dirección de esa parte dela memoria. Un entero tiene 4 bytes y aquí tenemos 5 de ellos, asi que estamos trasladando 20 bytes. Si "ptr1" apunta a un entero, la operación "ptr + 5" es igual a 1020. Si "ptr1" apunta a un valor"char", la operación "ptr1 + 5" seria igual a la dirección de 1005. Si "ptr1" apunta a una estructura que por ejemplo tiene un tamaño de 100 bytes, la operación "ptr1 + 5" seria igual a 1000 + 500. Sinimportar la dirección obtenida, esta es ubicada en "ptr2".
¿La pregunta es: como convertimos todo esto de nuevo en la variable "array"? Recuerde que "ptr1" apunta a la dirección del primer elementodel arreglo, asi que si esta es por ejemplo 1000, que representa la dirección 1020? Esta representa a 5 enteros mas allá en el arreglo, es decir el sexto elemento. No el primero, el segundo, el...
tracking img