<!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>