[C con Clase] Aclaracion punteros

rmmts rmmts rmmts.listas en gmail.com
Mie Jul 20 09:53:46 CEST 2011


El 20 de julio de 2011 00:41, anarkik anarkik <anarkicat en gmail.com>escribió:

> Hola, este es mi primer mensaje, aunque llevo un tiempo leyendo la lista de
> correo.
>
> Me gustaria alguna aclaracion si puede ser sobre los punteros. Soy
> estudiante de programacion, pero solo estudiamos con Java, y en Java, como
> ya sabeis, el programador no maneja los punteros directamente, si no me
> equivoco lo hace java de manera interna. El tema es que llevo un tiempo
> aprendiendo c++ por mi cuenta, y quisiera algunas aclaraciones, si puede
> ser.
>
> El tema es el siguiente... he leido bastante y he provado tambien sobre
> esto, entiendo a la perfeccion que es un puntero, y los he usado sin ningun
> problema, pero no acabo de comprender el concepto, es decir, por lo que he
> leido, se dice que son muy utiles, pero yo sigo sin verle tan gran utilidad
> "supongo que por la poca complejidad de los programas que aun estoy
> haciendo". De momento, estoy haciendo todos los ejercicios que tenia para
> java, y aun no he necesitado de punteros "o al menos eso creo".
>
> Me gustaria saber, en que momento es necesario usar punteros, ya que como
> he dicho, no se que utilidad encontrarle, ya que uso las variables
> directamente, y no se queventaja me podria dar un puntero que apunte a esas
> variables... estaria bien algun ejemplo practico de donde se deben usar
> punteros.
>
> Otra cosa que he leido y no acabo de entender, es que se dice que los
> punteros se pueden usar para hacer arrays dinamicos, pero en todo lo que he
> visto, siempre se le especifica el tamaño del array... entonces, en realidad
> no es dinamico, no? por ejemplo en java, esta ArrayList, LinkedList,
> TreeSet, etc.. que son dinamicos y en ningun momento le digo que tamaño de
> memoria debe usar.
>
> Y una ultima cosa, y que me podria servir de ejemplo... estoy usando
> librerias qt para entorno grafico, i siguiendo con esto de los punteros os
> pongo un ejemplo:
>
> #include <qapplication.h>
> #include <qlabel.h>
>
> int main(int argc, char *argv[])
> {
>     QApplication app(argc, argv);
>     QLabel *label = new QLabel("Hello Qt!");
>     label->show();
>     return app.exec();
> }
>
>
> Por que se usa el label como puntero? no seria lo mismo usarlo sin ser
> puntero? que ventaja tiene usarlo como puntero, yh porque razon en ese
> ejemplo se usa como puntero?
>
>
> Espero algunas aclaraciones, muchas gracias de antemano.
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



Hola, un ejemplo donde yo he visto bastante claro la utilidad del uso de
punteros es este.

#include <cstdio>
void duplica( int * );

int main ()
{
    int X = 10;
    printf("Valor inicial: %d\n", X);
    duplica( &X );
    printf("Doble de lo anterior:%d\n", X);
    return 0;
}

void duplica( int *ptrX )
{
    // La funcion no devuelve nada porque modifica el valor por referencia.
    *ptrX = ( *ptrX * 2 );
}


Modifica el valor de una variable por referencia sin tener que hacer un
return para modificar el valor.
Aquí incluso parece poco útil aun, pero imagina que en vez de un valor solo,
tienes varios que modificar.
Espero que te sirva.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110720/433abca0/attachment.html>


Más información sobre la lista de distribución Cconclase