Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Horricreu en 10 Julio 2010, 00:04 am



Título: [C++] Iniciación al manejo de los punteros
Publicado por: Horricreu en 10 Julio 2010, 00:04 am
INICIACIÓN AL MANEJO DE LOS PUNTEROS



INTRODUCCIÓN

Debido al miedo general que provocan los punteros y, la mala información y explicación en la mayoría de talleres que corren por Internet e incluso en algunos libros, me dispongo a crear este pequeño texto intentando explicarlos lo mejor que pueda ya que cuesta mucho encontrar información decente.



MANEJANDO LOS PUNTEROS

¿Qué es un puntero? Un puntero es una variable que hace referencia a una dirección de memoria, como puede ser 0x000F212A, en hexadecimal. Un ejemplo es:

Código
  1. int a; //Declaración de una variable entera
  2. int *ptr; //Declaración de un puntero

Pero es mejor así:

Código
  1. int a = 0; //Declaración de una variable entera
  2. int *ptr = NULL; //Declaración de un puntero

Otros ejemplos:

Código
  1. char a = 0; //Declaración de una variable de caracteres
  2. char *ptr = NULL; //Declaración de un puntero

Ya hemos visto la declaración de una variable normal y la de un puntero, pero nos preguntamos, ¿y por qué de la segunda manera? Al hacer esto, inicializamos las variables con un valor predeterminado en cambio de la primera forma las variables tienen un valor indeterminado y pueden contener, como llamamos en programación, basura. Recordemos que NULL es una constante declarada en los archivos de cabecera estándar y su valor es 0 o 0x00000000.

Antes de continuar, aclaremos dudas. Hemos visto que un puntero almacena una dirección de memoria como 0x000F212A o NULL y, también hemos dicho que si no sabemos a qué apuntar le asignamos NULL, pero claro, tener una dirección inválida es una estupidez, pero si hacemos por ejemplo:

Código
  1. a = 1;
  2. ptr = &a;

El operador "&" obtiene la dirección de memoria de una variable cuando se aplica a esta. Por lo tanto:

a = 1 => 0x000F212A (imaginemos que tiene esta dirección de memoria).
ptr = &a => 0x000F212A (consecuentemente, aplicando este operador obtenemos la misma dirección de memoria).

Podríamos decir que ptr "apunta a" a. Ahora, para comprobar lo que acabamos de hacer:

Código
  1. std::cout << "a= " << a << std::endl;
  2. std::cout << "ptr= " << *ptr << std::endl;

Lo que nos mostrará en pantalla será:

Código:
a= 1
ptr= 1

Vemos que sale lo mismo. El operador "*" aplicado a una variable de puntero obtiene el valor almacenado en una dirección de memoria indicada por este. Y además, podemos hacer lo siguiente:

Código
  1. *ptr = 2;

Estamos haciendo que el contenido apuntado por ptr almacene ahora: 2. O sea, como ptr apunta a a, es como hacer:

Código
  1. a = 2;

Luego, si hacemos:

Código
  1. std::cout << "a= " << a << std::endl;
  2. std::cout << "ptr= " << *ptr << std::endl;

Lo que nos mostrará ahora en pantalla es:

Código:
a= 2
ptr= 2



ARREGLOS Y PUNTEROS

Un ejemplo de arreglo sería:

Código
  1. int x[4] = {11, 12, 13, 14};

Para este arreglo se le asigna una memoria contigua de la siguiente manera:

(http://r.i.elhacker.net/cache?url=http://3.bp.blogspot.com/_ln-BZFukpcw/Sr_6hGcBGdI/AAAAAAAAADI/rdjSnx_SVao/s320/arreglo.jpg)

A x se le asigna la dirección de memoria del primer elemento del arreglo, en este caso: 11. Ahora vamos a crear un puntero al arreglo y a enseñar lo que pasa, jugando con el puntero:

Código
  1. int *ptr = NULL;
  2. ptr = x;
  3.  
  4. std::cout << *ptr << std::endl;
  5. ptr++;
  6.  
  7. std::cout << *ptr << std::endl;
  8. ptr++;
  9.  
  10. std::cout << *ptr << std::endl;
  11. ptr++;
  12.  
  13. std::cout << *ptr << std::endl;

Lo que nos mostrará en pantalla será:

Código:
11
12
13
14

Antes de empezar, una cosa importante: para que un puntero apunte a un arreglo, no hace falta que tenga el operador "&", ya que un arreglo es un puntero constante y por la misma razón no se puede tampoco incrementar un arreglo.

Bien, ptr apunta al primer elemento del arreglo, en el cual su dirección de memoria es 0x0012FF60. Lo mostramos por pantalla y, lógicamente como hemos puesto el operador "*" antes de ptr nos saldrá el contenido almacenado en esta posición de memoria: 11. Seguidamente, hacemos un postincremento al puntero, por lo tanto aumentará la dirección de memoria y apuntará al segundo elemento del arreglo; la dirección de memoria será 0X0012FF64, recordemos que un entero ocupa 4 bytes. Luego mostramos el contenido de esta dirección de memoria: 12. Hacemos esto hasta llegar al último elemento.



MEMORIA DINÁMICA

Comprendiendo todo lo explicado hasta ahora nos sirve para comprender el funcionamiento y las características más básicas de los punteros, ahora bien, entrando en el sector de la memoria dinámica, profundizamos y obtenemos una mayor potencia de estos mismos. Recordemos que se crea un puntero de la siguiente manera:

Código
  1. int *ptr = NULL;

Recordemos también, que al hacer esto el puntero apunta a una dirección inválida de memoria por lo que hacer:

Código
  1. *ptr = 1;

Sería inválido. Si queremos reservar memora exclusivamente para que nuestro puntero apunte a algo lo hacemos con el operador new. Por ejemplo:

Código
  1. int *ptr = new int;

Con el operador new reservamos memoria dinámica y, se le pasa como operando el tipo de variable a reservar. Luego de esto, se retorna la dirección de esta memoria reservada, por lo que necesitamos obligatoriamente un puntero para acceder a esta memoria.

Pero, al igual que reservamos memoria dinámica, también la podemos borrar o destruir. Y es obligatorio borrar toda esta memoria reservada ya que si no podemos ocasionar un agotamiento de memoria. Por ejemplo:

Código
  1. int *ptr = new int;
  2. delete ptr;

Reservamos memoria exclusivamente para el puntero con el operador new y, la eliminamos al final con el operador delete (el nombre del puntero es el que debe acompañar a delete).



ARREGLOS DINÁMICOS

Ya hemos visto el funcionamiento de la memoria dinámica y cómo utilizarla pero, aún podemos sacarle más jugo al tema. La aplicaremos a los arreglos. Un ejemplo de arreglo utilizando dinámico:

Código
  1. int *ptr = new int[5];

En este caso, reservamos cinco celdas consecutivas, o sea un arreglo y, cada de una de ellas tiene la memoria de un entero, 4 bytes.

Código
  1. for(int n = 0; n < 5; n++) std::cout << ptr[n] << std::endl;

Así ya accedemos a los elementos del arreglo.

La ventaja de utilizar arreglos dinámicos es que puedes establecer su tamaño en tiempo de ejecución, justo al contrario que los arreglos normales. Para establecer el tamaño de un arreglo dinámico, se puede hacer por ejemplo:

Código
  1. int n = 0;
  2.  
  3. std::cin >> n;
  4.  
  5. int *ptr = new int[n];

De la misma forma que se puede eliminar la memoria dinámica normal, también se puede eliminar los arreglos dinámicos. Un ejemplo sería:

Código
  1. int *ptr = new int[5];
  2. delete[] ptr;

La única diferencia con el delete de antes es que sólo se le añaden estos signos "[]" después del delete.



DESPEDIDA

Aquí termina este escrito y, espero que me haya explicado bien y que os haya servido para comprender un poquito más los punteros. Podéis contactar conmigo para cualquier duda que tengáis o simplemente, comentarlo acá.

Saludos :P


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: leogtz en 10 Julio 2010, 00:14 am
Estaría bien que trataras más la aritmética de punteros.

Me gustó, continúa así.


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Horricreu en 10 Julio 2010, 00:17 am
Estaría bien que trataras más la aritmética de punteros.

Me gustó, continúa así.

¡Sí! Justamente lo pensaba, a ver si mañana me animo y escribo ejemplos de aritmética de punteros ;)

Saludos :P


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: isseu en 10 Julio 2010, 00:17 am
muy bueno, sigue así


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: [Zero] en 10 Julio 2010, 00:19 am
Está francamente bien, hace una semana no te veía capaz de escribir algo así, pero me alegro de equivocarme, ojalá lo siga haciendo  ;).

Saludos


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: @synthesize en 10 Julio 2010, 00:22 am
Está de 10, como siempre con tus post, solo una pequeña pega, según mi gusto, te has limitado a contar, a tu forma, lo que ya dicen todos los libros y manuales que he visto, y me imagino que la mayoría de los que no he visto. Si intentaras enfocar esto a cosas mas "nuevas" (Sé que es imposible hacer cosas nuevas con esto, pero es para que se me entienda) ya sería mas que perfecto.

Un saludo

Pd. estaría muy bien en la WIki  ;)


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Horricreu en 10 Julio 2010, 00:22 am
Está francamente bien, hace una semana no te veía capaz de escribir algo así, pero me alegro de equivocarme, ojalá lo siga haciendo  ;).

Saludos

:o ¡Muchas gracias, de verdad! Me vienen ganas de escribir y aprender más :)

Saludos :P

Está de 10, como siempre con tus post, solo una pequeña pega, según mi gusto, te has limitado a contar, a tu forma, lo que ya dicen todos los libros y manuales que he visto, y me imagino que la mayoría de los que no he visto. Si intentaras enfocar esto a cosas mas "nuevas" (Sé que es imposible hacer cosas nuevas con esto, pero es para que se me entienda) ya sería mas que perfecto.

Un saludo

Te juro que hace unas pocas semanas no sabía que era un puntero (estoy exagerando). Leí, leí y leí libros y manuales y, en ninguno me quedaba claro... a ver si con esto queda todo bien clarito. Verás que me repito mucho, para que quede muy bien explicado :)

Y sí, tienes razón, quizás se tiene que cambiar el método de aprendizaje y no ir al método clásico ;) Gracias por tu crítica :)

Saludos :P


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: @synthesize en 10 Julio 2010, 00:28 am
Está de 10, como siempre con tus post, solo una pequeña pega, según mi gusto, te has limitado a contar, a tu forma, lo que ya dicen todos los libros y manuales que he visto, y me imagino que la mayoría de los que no he visto. Si intentaras enfocar esto a cosas mas "nuevas" (Sé que es imposible hacer cosas nuevas con esto, pero es para que se me entienda) ya sería mas que perfecto.

Un saludo

Te juro que hace unas pocas semanas no sabía que era un puntero (estoy exagerando). Leí, leí y leí libros y manuales y, en ninguno me quedaba claro... a ver si con esto queda todo bien clarito. Verás que me repito mucho, para que quede muy bien explicado :)

Y sí, tienes razón, quizás se tiene que cambiar el método de aprendizaje y no ir al método clásico ;) Gracias por tu crítica :)

Saludos :P

Si me das permiso colaboro un poco contigo, que hace tiempo que dejé atrás punteros y al verdad, estoy muy puteado por no recordarlos...  :-\


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Horricreu en 10 Julio 2010, 00:30 am
Está de 10, como siempre con tus post, solo una pequeña pega, según mi gusto, te has limitado a contar, a tu forma, lo que ya dicen todos los libros y manuales que he visto, y me imagino que la mayoría de los que no he visto. Si intentaras enfocar esto a cosas mas "nuevas" (Sé que es imposible hacer cosas nuevas con esto, pero es para que se me entienda) ya sería mas que perfecto.

Un saludo

Te juro que hace unas pocas semanas no sabía que era un puntero (estoy exagerando). Leí, leí y leí libros y manuales y, en ninguno me quedaba claro... a ver si con esto queda todo bien clarito. Verás que me repito mucho, para que quede muy bien explicado :)

Y sí, tienes razón, quizás se tiene que cambiar el método de aprendizaje y no ir al método clásico ;) Gracias por tu crítica :)

Saludos :P

Si me das permiso colaboro un poco contigo, que hace tiempo que dejé atrás punteros y al verdad, estoy muy puteado por no recordarlos...  :-\

Como quieras ;) Ponte en contacto conmigo a través del MSN (está en mi perfil).

Saludos :P


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Novlucker en 16 Julio 2010, 17:49 pm
... te has limitado a contar, a tu forma, lo que ya dicen todos los libros y manuales que he visto, y me imagino que la mayoría de los que no he visto ...

No obstante, conozco a varios con dolores de cabeza cuando recién comienzan con los punteros, y que lo explique así de claro alguien que recién lo entiende tiene su mérito, además de que puede resultar más sencillo para otros que comienzan al igual que él :)

Saludos


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: [L]ord [R]NA en 16 Julio 2010, 17:59 pm
... te has limitado a contar, a tu forma, lo que ya dicen todos los libros y manuales que he visto, y me imagino que la mayoría de los que no he visto ...

No obstante, conozco a varios con dolores de cabeza cuando recién comienzan con los punteros, y que lo explique así de claro alguien que recién lo entiende tiene su mérito, además de que puede resultar más sencillo para otros que comienzan al igual que él :)

Saludos

+1


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: .:BlackCoder:. en 16 Julio 2010, 19:18 pm
Muy bueno, un consejito es que pongas codigos de ejemplos, es decir ejercicios hechos, eso fue lo que mas me costo a mi, la practica  :xD... De hecho todavia creo que no la domino del todo...

Por ahi hay un post mio haciendo un ejercicio que no me salia sobre memoria dinamica y funciones... No tiene mucho sentido pero es muy bueno para ver formas de utilizar memoria dinamica... Te puede servir para hacer ejemplos, o simplemente colocarlo a manera de cultura general  :xD

Saludos... Muy buen aporte...


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Horricreu en 16 Julio 2010, 20:29 pm
Muy bueno, un consejito es que pongas codigos de ejemplos, es decir ejercicios hechos, eso fue lo que mas me costo a mi, la practica  :xD... De hecho todavia creo que no la domino del todo...

Por ahi hay un post mio haciendo un ejercicio que no me salia sobre memoria dinamica y funciones... No tiene mucho sentido pero es muy bueno para ver formas de utilizar memoria dinamica... Te puede servir para hacer ejemplos, o simplemente colocarlo a manera de cultura general  :xD

Saludos... Muy buen aporte...

Ya he publicado un ejercicio. Publicaré más si veo que tiene éxito. ¡Animaos todos!

Saludos :P


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Micah Genji en 1 Agosto 2010, 19:32 pm
excelente lo estuve revisando y esta comprensivo.
si pusieras algunos ejemplos con cadena de caracteres seria la joya :)

en fin te mando mi forma de resolverlo el ejercicio, me decis q hago mal

saludos


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Horricreu en 2 Agosto 2010, 00:41 am
excelente lo estuve revisando y esta comprensivo.

Gracias ;D

si pusieras algunos ejemplos con cadena de caracteres seria la joya :)

Ahora pongo alguno.

en fin te mando mi forma de resolverlo el ejercicio, me decis q hago mal

saludos

No sé si entendiste el ejercicio. Ahora modifico la información para que se entienda mejor pero a partir de la palabra: queso. Con esta palabra, dividiéndola, se puede mostrar la frase: eso es queso. Una vez sabes esto, haces un arreglo, penor ejemplo:

Código
  1. char palabra[6] = "queso";

Y un puntero al arreglo:

Código
  1. char *ptr = palabra;

A partir de ahí, vas aumentando la posición de memoria del puntero, para que te muestre la palabra y, puedes modificar el contenido de UN elemento. Igualmente, ahora pongo un ejemplo jugando con los arreglos de caracteres y, seguramente lo entenderás mejor.

Saludos :P


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: JuszR en 6 Septiembre 2010, 23:17 pm
Bueno, entendí mejor que en los e-books que tengo (y me volví loco googleando y nada). :¬¬

Ahora, hay algo que no entiendo bien. ¿Para qué sirven realmente los pointers?? ¿qué gano teniendo la dirección en memoria de X?
Cuando ejecuto mi programa, si necesito más memoria supongo que el sistema lo hace solo, no necesito reservar memoria.


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Horricreu en 6 Septiembre 2010, 23:37 pm
Bueno, entendí mejor que en los e-books que tengo (y me volví loco googleando y nada). :¬¬

Ahora, hay algo que no entiendo bien. ¿Para qué sirven realmente los pointers?? ¿qué gano teniendo la dirección en memoria de X?
Cuando ejecuto mi programa, si necesito más memoria supongo que el sistema lo hace solo, no necesito reservar memoria.

Citar
C was developed when computers were much less powerful than they are today and being very efficient with speed and memory usage was often not just desirable but vital. The raw ability to work with particular memory locations was obviously a useful option to have. A few tasks these days, such as programming microcontrollers, still need this. However most modern programmers do not need such fine control and the complications of using pointers make programs less clear to understand and add to the ways in which they can be go wrong. So why are pointers still used so much in C & its successor, C++?

The reason is that pointers are used to bodge into C some vital features which are missing from the original language: arrays, strings, & writeable function parameters. They can also be used to optimize a program to run faster or use less memory that it would otherwise.

One of the complications when reading C programs is that a pointer could be being used for any, several or all of these different reasons with little or no distinction in the language so, unless the programmer has put in helpful comments, one has to follow through the program to see what each pointer is used for in order to work out why it is there instead of a plain simple variable.

Con los punteros eres el amo y señor de una dirección de memoria. Puedes hacer lo que te dé la gana... ahí juega la imaginación ;D

Saludos :P


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: JuszR en 7 Septiembre 2010, 22:54 pm
¿Cómo qué? dame un ejemplo real.

microcontrollers, still need this. However most modern programmers do not need such fine control and the complications of using pointers make programs less clear to understand and add to the ways in which they can be go wrong. So why are pointers still used so much in C & its successor, C++?

The reason is that pointers are used to bodge into C some vital features which are missing from the original language: arrays, strings, & writeable function parameters. They can also be used to optimize a program to run faster or use less memory that it would otherwise.
Según eso no los necesito. No pienso programar microcontroladores, y según tengo entendido, C++ tiene eso que le 'falta' a C.


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Horricreu en 8 Septiembre 2010, 18:11 pm
¿Cómo qué? dame un ejemplo real.

Si aprendes programación, no sé lo que quieres hacer. Hay montones de ejemplos...

microcontrollers, still need this. However most modern programmers do not need such fine control and the complications of using pointers make programs less clear to understand and add to the ways in which they can be go wrong. So why are pointers still used so much in C & its successor, C++?

The reason is that pointers are used to bodge into C some vital features which are missing from the original language: arrays, strings, & writeable function parameters. They can also be used to optimize a program to run faster or use less memory that it would otherwise.
Según eso no los necesito. No pienso programar microcontroladores, y según tengo entendido, C++ tiene eso que le 'falta' a C.

Claro, C++ se puede orientar a objetos.

Saludos :P


Título: Re: [C++] Iniciación al manejo de los punteros
Publicado por: anonimo12121 en 16 Noviembre 2010, 13:54 pm
Horricreu vi este post hace tiempo pero estaba dejado de programar ahora lo retornado serio, y lo e leído y e hecho lo siguiente.
Correjirme por favor
Código:
#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
    int a =1;
    int v[]={12,13,14,15};
    int *p=NULL;
    int *p1=new int[4];
    p=&a;
    cout << " => Welcome\n";
    cout << &a << " => a = " << a << "\n";
    cout << p << " => *p = " << *p << "\n";
    *p=2;
    cout << &a << " => a = " << a << "\n";
    cout << p << " => *p = " << *p << "\n";
    p=v;
    cout << p << " => *p = " << *p << "\n";
    p++;
    cout << p << " => *p = " << *p << "\n";
    p++;
    cout << p << " => *p = " << *p << "\n";
    p++;
    cout << p << " => *p = " << *p << "\n";
    p++;
    for(int i=0;i<=4;i++)p1[i]=v[i]; //no esta apuntando a la dirección de v[x] si no que se le añade el valor reservado a la memoria
    cout << &p1[0] << " => *p1 = " << p1[0] << "\n";
    cout << &p1[1] << " => *p1 = " << p1[1] << "\n";
    cout << &p1[2] << " => *p1 = " << p1[2] << "\n";
    cout << &p1[3] << " => *p1 = " << p1[3] << "\n";
    cin.get();
    delete[] p1;
}
/*
Para crear un puntero se le asigna el valor NULL asi "int *p =NULL";
int *p al poner "*" hace que sea puntero la variable.
para que el puntero tenga una dirección "p=&variable.
para usar valor de la dirección del punter "*p".
para ver la dirección de memoria del puntero "p".
para ver la dirección de memoria de una variable int normal &variable.
tambien se puede hacer para reservar un espacio y que el puntero apunte algo de la siguiente manera "int *p= new int;
con el operador "new" reservamos memoria dinamica es obligatorio eliminar la memoria reservada "delente p;"
Arreglos dinamicos int p=new int[5]; delete[] int;
*/


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: JuszR en 16 Noviembre 2010, 16:01 pm

Si aprendes programación, no sé lo que quieres hacer. Hay montones de ejemplos...
Ok, básicamente, según entendí hasta ahora, los punteros sirven de mucho para reducir el consumo de memoria. En vez de usar una variable, hacemos un "espejo" de ella.  ::)


Título: Re: [C++] Iniciación al manejo de los punteros
Publicado por: Horricreu en 16 Noviembre 2010, 18:46 pm
Xafirot, felicidades por volver a la programación, no te rindas por unos míseros punteros porque a mi también me costaron muchísimo y al final a base de leer y practicar enésimas veces finalmente lo conseguí :) En cuanto a tu código, está perfecto, lo que pasa es que declaras poca memoria para p1 en muchos casos te puede dar Warning o un Debug Error.

JuszR a ver, lo siento es que soy bastante patético respondiendo, es que este taller es sólo para que veáis cómo funcionan los punteros, no os voy a decir para qué los tenéis que utilizar ya que existen miles y miles de usos. Lo bueno de los punteros es que al declarar la variable, no es que reduzcan el consumo, sino que nunca te faltará memoria ni nunca te sobrará y, en muchos casos este es un factor muy a favor para el programa ya sea en velocidad, espacio...

Espero haber resuelto algunas dudas y muchas gracias por continuar leyendo este documento ;)


Título: Re: [C++] Iniciación al manejo de los punteros
Publicado por: KuraraGNU en 16 Noviembre 2010, 21:42 pm
Está muy bien explicadito ^^ +1 Master


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: Karman en 18 Noviembre 2010, 00:27 am
Ok, básicamente, según entendí hasta ahora, los punteros sirven de mucho para reducir el consumo de memoria. En vez de usar una variable, hacemos un "espejo" de ella.  ::)

y no solo para eso, tienen muchos usos, acá tenes un ejemplo que si lo completás de entender, se puede decir que casi dominás punteros...

http://foro.elhacker.net/programacion_general/programas_para_resolver_problemas-t199992.0.html;msg964683#msg964683 (http://foro.elhacker.net/programacion_general/programas_para_resolver_problemas-t199992.0.html;msg964683#msg964683)

S2


Título: Re: [TALLER][C++] Empezando a manejar los punteros
Publicado por: ace332 en 18 Noviembre 2010, 01:38 am
Citar
http://foro.elhacker.net/programacion_general/programas_para_resolver_problemas-t199992.0.html;msg964683#msg964683 (http://foro.elhacker.net/programacion_general/programas_para_resolver_problemas-t199992.0.html;msg964683#msg964683)


 :o yo hice lo mismo (la calculadora) para el concurso de programación...

PD: tendré que pensar en algo más  ;)