OT:programovani v C

Ales Prochaska prochaska@alsoft.cz
Úterý Červen 16 00:00:58 CEST 2009


Jasne, dik. Ted si vzpominam, ze uz mi to nekdo vysvetloval ale tohle
je na me trochu moc a nejak se mi to nechce udrzet v hlave :-) Hlavne
me rozhodilo, ze uvnitr funkce x

typedef float tvektor[8];
void x(tvektor koef) { ... }

maji sizeof(tvektor) a sizeof(koef) ruznou velikost. Ada by mi tohle
neudelala... :-) Ale uz to zase nejakou chvili budu chapat :-)

Ales Prochaska

> sizeof() je jedna z mala vynimiek, ked sa pole (ktore v skutocnosti
> v C neexistuje a je to len taky syntakticky fake) poklada za pole
> (C99, 6.3.2.1, odst.4) a sizeof vracia jeho velkost v byte
> (6.5.3.4). Bohuzial, 6.5.3.4 hovori aj to, ze vysledok sizeof je
> implementacne zavisly (kedze interpretacia "byte" je tiez
> implementacne zavisla); ale zvycajne to sedi tak ako si clovek predstavuje.

> wek


> On Mon, 15 Jun 2009 22:54:47 +0200
> Ales Prochaska <prochaska@alsoft.cz> wrote:

>> Jj, to jsem měl na mysli, dík. Zapomněl jsme to napsat a taky jsem
>> nenapsal, že si hlavně nejsem jistý tím, jestli sizeof() vrátí
>> velikost pole nebo počet složek nebo velikost pointeru na pole nebo co
>> vlastně :-) 
>> 
>> Ales Prochaska
>> 
>> > No, spravne je siroky pojem... Syntakticky ano, ale ci je to to, co
>> > ste chceli (koef prekopirovat do xkoef)... Plus treba #includnut
>> > header s prototypom memcpy (string.h? nepamaram si...)
>> 
>> > wek ("the C hater")
>> 
>> 
>> > -----Original Message-----
>> 
>> > Osud me donutil napsat nekolik radku v mem neoblibenem jazyce. Uz jsem
>> > zase vsechno zapomnel, tak prosim o radu - je nasledujici fragment
>> > spravne? Dik
>> > Ales Prochaska
>> 
>> 
>> > typedef float tvektor[8];
>> > tvektor koef;
>> > tvektor xkoef;
>> > // ...
>> > memcpy(xkoef, koef, sizeof(koef));
>> 
>> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list





Další informace o konferenci Hw-list