🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #11533

Re: Como pasar a una funcion.....

#11533
From: Xavier Montero
Date: Tue, 30 Oct 2001 20:39
54 lines
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-mail
References: <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