Republica Bolivariana De Venezuel Programacion Resumen

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Republica Bolivariana De Venezuel Programacion Resumen as PDF for free.

More details

  • Words: 499
  • Pages: 4
Republica Bolivariana de Venezuela Ministerio de Educación y Deporte Colegio Universitario Francisco de Miranda Programación Trabajo de Programación: Punteros

Integrantes: Contreras Jonathan Zerpa Gabriel

Caracas

Resumen

Los punteros son de amplia utilización en programación y casi todos los lenguajes permiten la manipulación de los mismos. La razón de ser principal de los punteros reside en manejar datos alojados en la zona de memoria dinámica o heap (aunque también se pueden manipular objetos en la zona estática), bien sean datos elementales, estructuras (struct en 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 los elementos 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 aplicación. En nuevos lenguajes de alto nivel, los punteros se han tratado de abstraer. De tal forma que en el lenguaje C# sólo pueden ser usados en zonas de código delimitadas como "inseguras", o llegando a su total desaparición en lenguajes como Java o Eiffel. Un puntero o apuntador es una variable que referencia una región de memoria; en otras palabras es una variable cuyo valor es una dirección de memoria. Si se tiene una variable ' p ' de tipo puntero que contiene una dirección de memoria en la que se encuentra almacenado un valor ' v ' se dice que ' p ' apunta a ' v '. Trabajar con punteros implica la no manipulación de las variables en 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 aplicación en otros lenguajes de programación: struct Elemento // Ejemplo de un nodo de lista doble enlazada { int dato;

struct Elemento *siguiente; // Para la declaración 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 haría 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 ubicación del puntero x

*y = temp; // copia el valor de temp en la ubicación apuntada por y } Ejemplo en C# //Suma de dos números enteros private unsafe int Suma(int* a, int* b) { return *a + *b; } // Su uso (El método llamador también debe tener la palabra clave 'unsafe'): // int x, y; // int *ptr1 = &x; // int *ptr2 = &y; // Suma(ptr1, ptr2);

Related Documents