republica bolivariana de venezuel programacion resumen
TRANSCRIPT
-
8/14/2019 Republica Bolivariana de Venezuel Programacion Resumen
1/4
-
8/14/2019 Republica Bolivariana de Venezuel Programacion Resumen
2/4
Resumen
Los punteros son de amplia utilizacin enprogramacin y casi todos los lenguajes
permiten la manipulacin de los mismos. La razn de ser principal de los punteros
reside en manejar datos alojados en la zona de memoria dinmica o heap (aunque
tambin se pueden manipular objetos en la zona esttica), bien sean datos elementales,
estructuras (structen C) u objetos pertenecientes a una clase (en lenguajes Orientados a
Objetos). Gracias a esta propiedad, los punteros permiten modelar un grafo, en donde
los elementos de ste son los datos residentes en memoria y las relaciones entre loselementos son los propios apuntadores. Sin embargo, los punteros son un gran dolor de
cabeza para los programadores novatos y para cualquier programador que deba depurar
una aplicacin.
En nuevos lenguajes de alto nivel, los punteros se han tratado de abstraer. De tal forma
que en el lenguaje C# slo pueden ser usados en zonas de cdigo delimitadas como
"inseguras", o llegando a su total desaparicin en lenguajes como Java o Eiffel.
Un puntero o apuntador es una variableque referencia una regin de memoria; en otras
palabras es una variable cuyo valor es una direccin de memoria. Si se tiene una
variable ' p ' de tipo puntero que contiene una direccin de memoria en la que se
encuentra almacenado un valor ' v ' se dice que ' p ' apunta a ' v '.
Trabajar con punteros implica la no manipulacin de las variablesen s, sino manejar
direcciones de memoria en la cuales residen los datos.
El ejemplo:
Que sigue es propio del lenguaje C/C++ y no es de aplicacin en otros lenguajes de
programacin:
struct Elemento // Ejemplo de un nodo de lista doble enlazada
{
int dato;
http://es.wikipedia.org/wiki/Programaci%C3%B3nhttp://es.wikipedia.org/wiki/Heaphttp://es.wikipedia.org/wiki/Grafohttp://es.wikipedia.org/wiki/C_Sharphttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Javahttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Eiffelhttp://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Memoria_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Direcci%C3%B3n_de_memoriahttp://es.wikipedia.org/wiki/Variablehttp://es.wikipedia.org/wiki/Variablehttp://es.wikipedia.org/wiki/Heaphttp://es.wikipedia.org/wiki/Grafohttp://es.wikipedia.org/wiki/C_Sharphttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Javahttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Eiffelhttp://es.wikipedia.org/wiki/Variable_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Memoria_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Direcci%C3%B3n_de_memoriahttp://es.wikipedia.org/wiki/Variablehttp://es.wikipedia.org/wiki/Programaci%C3%B3n -
8/14/2019 Republica Bolivariana de Venezuel Programacion Resumen
3/4
struct Elemento *siguiente; // Para la declaracin de un puntero se usa '*'
struct Elemento *anterior;
};
Para acceder a los atributos como punteros de una estructura que va a ser tratada como
tal, se debe desreferenciar el puntero y acceder a sus miembros como se hara con una
variable normal, o usar directamente el operador: ->. De tal modo que:
Elemento *elem;
Elemento sig1 = (*elem).siguiente;
Elemento sig2 = elem->siguiente;
/* Se cumple que: sig1==sig2 */
Otro ejemplo en C++
void swap(int *x, int *y)
{
int temp;
temp = *x; // copia el valor apuntado por x a temp
*x = *y; // copia el valor apuntado por y en la ubicacin del puntero x
*y = temp; // copia el valor de temp en la ubicacin apuntada por y
}
Ejemplo en C#
//Suma de dos nmeros enteros
private unsafe int Suma(int* a, int* b)
{
return *a + *b;
}
// Su uso (El mtodo llamador tambin debe tener la palabra clave 'unsafe'):
// int x, y;
// int *ptr1 = &x;
// int *ptr2 = &y;
// Suma(ptr1, ptr2);
http://es.wikipedia.org/wiki/C%2B%2Bhttp://es.wikipedia.org/wiki/C_Sharphttp://es.wikipedia.org/wiki/C%2B%2Bhttp://es.wikipedia.org/wiki/C_Sharp -
8/14/2019 Republica Bolivariana de Venezuel Programacion Resumen
4/4