ampersandy u promeenych (Was:RE: Jsem zoufaly, neidentifikovatelna chyba v programu v C)

Radek_Sedmak na eurotel.cz Radek_Sedmak na eurotel.cz
Čtvrtek Květen 25 20:19:12 CEST 2000


> > & je adresni operator, pokud je pouzit, predava se ADRESA promenne,
> > pokud neni pouzit, predava se hodnota promenne. Rozdil je v tom, ze
> > pokud chci ve volane funkci menit hodnotu, musim ji predat ADRESU. Jinak
> > se sice hodnota zmeni, ale jen hodnota lokalni kopie (ve funkci). Funkce
> > samozrejme musi "vedet" ze se ji preda adresa, protoze tak s ni i
> > pracuje. No a pokud do funkce, ktera ocekava adresu predate hodnotu, tak
> > to zbuchne, protoze se funkce pokusi pristoupit k pameti, ktera ji
> > nepatri. Prekladac ani nepipnul??
> >
> To se mi libi. Ale uvedu priklad, ktery mne mate.
> 1. Priklad:
> void funkce(char * prom);
> char prom[128];
> ...
> funkce(&prom);
> - je spravne.(aspon doufam!)
>
> 2.Priklad:
> void funkce1(char *prom1);
>
> void funkce2(char prom2[])


Protoze char prom2[] jest evkivalentni zapisu char *prom2 tak potom je to snad
uz jasne ne. Ale tohle sou vylozene zacatecnicke veci....


> {
>   ...
>   funkce1(prom2);
>   ...
> }
> - tady NESMI byt & u prom2!
> Muzete mi k tomu neco napsat?



                                                                            Bye
Sam




Další informace o konferenci Linux