Article View: es.comp.os.linux.programacion
Article #11533Re: Como pasar a una funcion.....
From: Xavier Montero
Date: Tue, 30 Oct 2001 20:39
Date: Tue, 30 Oct 2001 20:39
54 lines
3040 bytes
3040 bytes
> main()
> {
> char *p;
> int dato = 1;
>
> for(i=0;i<sizeof(*(p));i++){
> *p = (__typeof__(*(p)))dato;
> printf("%p _ %i _\n",p,*p);
> p++;
> }
>
> }
Supongo que te refieres que char*p; no siempre es char*p; sino
que en general el mi_tipo*p;
As� salvamos la ambig�edad de lo de si el sizeof es siempre
uno y pasar� a ser siempre el n�mero de bytes ocupados
por el tipo mi_tipo.
> lo que hace es mirar el tama�o del dato almacenado en 'p',
> i escribe en la posicion de memoria apuntada por 'p' el dato
> haciendo un cast. Asi por ejemplo si p apunta a un int, escribira
> en 4 bytes un 1, haciendo un cast a int.
Estooo... Si el int es de 32 bits, lo que har� ser� escribir en
16 bytes, y adem�s los 16 sin inicializar, seg�n la rutina
que describes.
El bucle da 4 vueltas, pero atenci�n!!! p++ no suma uno
sino 4, porque la aritm�tica de punteros salta a�ade
o resta tantas unidades como haga falta para alinearte
a los bytes de inicio de un dato contiguo:
Si p = 4000, p++ vale 4001 si *p es char, y 4004 si *p es int.
Con lo que tu frase es incompleta: La repito y corrijo aqu�:
> haciendo un cast. Asi por ejemplo si p apunta a un int, escribira
> en 4 bytes un 1, haciendo un cast a int.
Y escribir� 12 bytes con 0, dejando la memoria as�: 1000100010001000
en m�quinas con unas CPU y 0001000100010001 en m�quinas con otras
CPU seg�n sean big-endian o little-endian (p.e. Intel vs Motorola).
No creo que haya m�quinas que dejaran 0100010001000100 pero
te�ricamente ser�a posible si para los words no intercambia
los bytes, pero para los long-words intercambia los words.
As� que... luego mirar� tu c�digo que me has enviado por mail, pero
antes de ve c�mo pasamos eso a funci�n debemos ponernos de acuerdo
en c�mo funciona y qu� esperamos si no lo pasamos a funci�n.
Salut!
Xavi.
Technical Details
Message-ID:
<3BDF0FE8.14DB9C77@dsitelecom.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fr.clara.net!heighliner.fr.clara.net!opentransit.net!newsfeed.comtenidos.com!newsfeeder.wanadoo.es!news.antakira.com!not-for-mailReferences:
<9rjhp1$mec$1@news.wanadoo.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,21e8a17fbbc6edc2 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2001-10-30 13:21:10 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fr.clara.net!heighliner.fr.clara.net!opentransit.net!newsfeed.comtenidos.com!newsfeeder.wanadoo.es!news.antakira.com!not-for-mail From: Xavier Montero <xmontero@dsitelecom.com> Newsgroups: es.comp.os.linux.programacion Subject: Re: Como pasar a una funcion..... Date: Tue, 30 Oct 2001 21:39:04 +0100 Organization: Digital Sound Items Lines: 54 Message-ID: <3BDF0FE8.14DB9C77@dsitelecom.com> References: <9rjhp1$mec$1@news.wanadoo.es> NNTP-Posting-Host: 212.25.147.135 Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: news.wanadoo.es 1004475991 12578 212.25.147.135 (30 Oct 2001 21:06:31 GMT) X-Complaints-To: usenet@wanadoo.es NNTP-Posting-Date: Tue, 30 Oct 2001 21:06:31 +0000 (UTC) X-Mailer: Mozilla 4.77 [en] (Windows NT 5.0; U) X-Accept-Language: en