Punteros Universidad Nacional Mayor de San Marcos Facultad de Ciencias Matemáticas Punteros
Definición Un puntero o apuntador es una variable que contiene una dirección de memoria; normalmente esta dirección es la posición de otra variable 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 los datos en sí, sino manejar las direcciones de memoria en la cuales estos residen.
Variables puntero Si una variable va contener un puntero, entonces tiene que declararse como tal. Una declaración de puntero consiste en un tipo de base, un * y el nombre de la variable. La forma general de declaración de una variable puntero es: tipo *nombre Donde tipo es cualquier tipo valido de C (el tipo base del puntero) y nombre es el nombre de la variable puntero. El tipo base del puntero define el tipo de variables a las que puede apuntar el puntero. Técnicamente, cualquier pito de puntero puede apuntar a cualquier lugar de la memoria, pero C asume a lo que apunta un puntero es a un objeto de su tipo base.
Los operadores de punteros Existen dos operadores especiales de punteros: & y *. El & es un operador monario que devuelve la dirección de su memoria de su operando. El operador * es el complemento de *. Es un operador monario que devuelve el valor de la variable localizada en la dirección que sigue. Por ejemplo: m=&cuenta; /* Pone en m la dirección de la variable cuenta */ q=*m; /* Pone el valor de cuenta en q */
Ejemplos 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 } En C# //Suma de dos números enteros private unsafe int Suma(int* a, int* b) return *a + *b;