[C con Clase] help

KANON 666 obregonson21 en hotmail.com
Sab Sep 12 21:16:06 CEST 2009





  NO se como suscribirme ala clase de c++ desde cero gracias.


 

> From: cconclase-request en listas.conclase.net
> Subject: Resumen de Cconclase, Vol 40, Envío 12
> To: cconclase en listas.conclase.net
> Date: Sat, 12 Sep 2009 12:00:01 +0200
> 
> Envíe los mensajes para la lista Cconclase a
> cconclase en listas.conclase.net
> 
> Para subscribirse o anular su subscripción a través de la WEB
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> 
> 
> O por correo electrónico, enviando un mensaje con el texto "help" en
> el asunto (subject) o en el cuerpo a:
> cconclase-request en listas.conclase.net
> 
> Puede contactar con el responsable de la lista escribiendo a:
> cconclase-owner en listas.conclase.net
> 
> Si responde a algún contenido de este mensaje, por favor, edite la
> linea del asunto (subject) para que el texto sea mas especifico que:
> "Re: Contents of Cconclase digest...". Además, por favor, incluya en
> la respuesta sólo aquellas partes del mensaje a las que está
> respondiendo.
> 
> 
> Asuntos del día:
> 
> 1. Re: tipo estructurado algo complejo (José Álvaro Domínguez Díaz)
> 2. Re: tipo estructurado algo complejo (Steven Davidson)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Fri, 11 Sep 2009 16:06:46 +0200
> From: José Álvaro Domínguez Díaz <ilgrim en gmail.com>
> Subject: Re: [C con Clase] tipo estructurado algo complejo
> To: Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
> Message-ID: <4AAA5976.4060802 en gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
> 
> Susana Sacie wrote:
> > hola, pues vereis, estoy trabando con el siguiente tipo estructurado 
> > pero no logro entender su estructura, a ver si me la podeis describir:
> >
> Muy buenas.
> 
> > struct mrtd_handle {
> > int dgpresent;
> > struct {
> > int (*transceive)(struct mrtd_handle *h, //este es el mismo tipo 
> > estructurado que estoy declarando
> > unsigned char *sbuf, unsigned int slen,
> > unsigned char *rbuf, unsigned int *rlen);
> > } fn;
> > };
> > 
> > y lo que no entiendo es el uso que hago de este tipo, os pongo una 
> > funcion y llamadas que usan este tipo:
> > 
> > void llamada (struct mrtd_handle *h){
> > int a;
> > unsigned char cmd[5] = { 0x00, 0x84, 0x00, 0x00, 0x00 };
> > unsigned char retbuf[256+2];
> > unsigned int retlen = sizeof(retbuf);
> > 
> > *a=h->fn.transceive(h, cmd, 5, retbuf, &retlen); *//parece como si fuese 
> > una función, incluso pasa retlen
> > 
> > //por referencia para que la modifique
> 
> 
> De hecho, es un puntero a funcion. Suele ser un uso avanzadillo de los 
> punteros.
> Imagina tener una matriz de varios punteros a funcion y poder ejecutar 
> una u otra dependiendo de un valor determinado, unicamente referenciando 
> al indice de la posicion que ocupa en el array. Tiene sus limitaciones, 
> pero puede ser util en ocasiones(Creo haber visto algo similar 
> utilizando Ncurses).
> 
> > if (a<0) {// ahora analiza el valor de a, yo pienso que este valor 
> > habrá sido almacenado antes ya que
> > // la variable h es usada por otra funcion antes de 
> > pasarla a la funcion llamada. 
> > return a;
> > }
> > 
> > return 0;
> > }
> > 
> > y despues por ejemplo tengo una función con una serie de parametros:
> > 
> > static int librfid(struct mrtd_handle *h , const unsigned char *cmd, 
> > unsigned int len, unsigned char *resp, unsigned int *rlen); //esta 
> > funcion devuelve un entero en funcion de los parametros que se le pasan
> > 
> > y ahora de repente hago la siguiente llamada en otra función:
> > struct mrtd_handle *h;
> > *h->fn.transceive = librfid*; //¿ porque se puede llamar a librfid 
> > sin pasarle ningun parametro?
> > 
> 
> Ni idea. Imagino que ya tiene todo lo que necesita en memoria al 
> haberselo pasado antes y no haber sido modificado(supongo), no lo se la 
> verdad. Me resulta bastante extraño tambien.
> 
> Un Saludo.
> 
> 
> 
> ------------------------------
> 
> Message: 2
> Date: Fri, 11 Sep 2009 11:56:16 -0400
> From: Steven Davidson <srd4121 en njit.edu>
> Subject: Re: [C con Clase] tipo estructurado algo complejo
> To: Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
> Message-ID: <4AAA7320.1080709 en njit.edu>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
> 
> Hola Susana,
> 
> Susana Sacie wrote:
> > hola, pues vereis, estoy trabando con el siguiente tipo estructurado 
> > pero no logro entender su estructura, a ver si me la podeis describir:
> > 
> 
> José Álvaro ya te ha explicado que se trata de un puntero a una función. 
> Sugiero consultar el capítulo 20 de nuestro curso de C++. El enlace es: 
> http://c.conclase.net/curso/index.php?cap=020b#FUN3_puntfunc
> 
> > 
> > a=h->fn.transceive(h, cmd, 5, retbuf, &retlen); //parece como si fuese 
> > una función, incluso pasa retlen
> > 
> > //por referencia para que la modifique
> 
> Estamos invocando la función que el campo 'transceive' tiene guardada. 
> Como se trata de una función, podemos invocarla como cualquier otra.
> 
> > if (a<0) {// ahora analiza el valor de a, yo pienso que este valor 
> > habrá sido almacenado antes ya que
> > // la variable h es usada por otra funcion antes de 
> > pasarla a la funcion llamada. 
> 
> Efectivamente. Acaba de ser almacenado en la sentencia anterior:
> 
> a = h->fn.transceive( h, cmd, 5, retbuf, &retlen );
> 
> Has guardado el valor de retorno de la llamada a la función en 'a', que 
> es un 'int'.
> 
> > return a;
> > }
> > 
> > return 0;
> > }
> > 
> > y despues por ejemplo tengo una función con una serie de parametros:
> > 
> > static int librfid(struct mrtd_handle *h , const unsigned char *cmd, 
> > unsigned int len, unsigned char *resp, unsigned int *rlen); //esta 
> > funcion devuelve un entero en funcion de los parametros que se le pasan
> > 
> > y ahora de repente hago la siguiente llamada en otra función:
> > struct mrtd_handle *h;
> > h->fn.transceive = librfid; //¿ porque se puede llamar a librfid 
> > sin pasarle ningun parametro?
> > 
> 
> La respuesta es que no estamos llamando a 'librfid'. Lo que estamos 
> haciendo es asignar la función 'librfid' al puntero 'transceive'. 
> Posteriormente, invocaremos a 'librfid' a través de 'transceive', como 
> haremos en 'llamada'.
> 
> Esto se aclarará cuando veas y estudies el tema de punteros a funciones.
> 
> 
> Espero haber aclarado las dudas.
> 
> Steven
> 
> 
> 
> 
> 
> ------------------------------
> 
> _______________________________________________
> Cconclase mailing list
> Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> 
> 
> Fin de Resumen de Cconclase, Vol 40, Envío 12
> *********************************************

_________________________________________________________________
Feliz aniversario Messenger!
www.aniversariomessenger.com.mx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090912/87a59e0d/attachment.html>


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