<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=text/html;charset=iso-8859-1 http-equiv=Content-Type>
<STYLE>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</STYLE>

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

<P></P>_______________________________________________<BR>Lista de correo 
Cconclase 
Cconclase@listas.conclase.net<BR>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net<BR>Bajas: 
http://listas.conclase.net/index.php?gid=2&mnu=FAQ</BODY></HTML>