C a pamat

Andy Jancura andy_jancura
Středa Březen 17 12:05:01 CET 2004


> >zdravim,
> >
> >Akurat teraz ma C dostalo na lopatky, dufam, ze poradite:
> >Ked naalokujem cast pamate pomocou malloc(), ziskam
> >smernik na zaciatok tohto bloku pamati.
> >
> >smernik = malloc(...);
> >
> >mozem pristupovat k tomuto bloku takto?
> >smernik[cislo] = ...;
>
>Nie. Ide to malym trikom.
>
>void *smernik;
>unsigned char *pristup;
>
>smernik=malloc(sizeof(OBJEKT));
>
>(void*) pristup = smernik;
>
>V premennej *pristup je potom prvy (nulty) byte alokovaneho objektu. Ku
>dalsim sa dostanete napr. pomocou pristup++;
>
>A.


Pozrel som si este mudre knihy a na doplnenie:

Ak chcete pouzit toto:

> >smernik = malloc(...);
> >smernik[cislo] = ...;

Je to cele tak ako to napisal tuna kolega:

>int *smernik;
>smernik=(int *)maloc(xxxx * sizeof(int));
>*(smernik+xxx)=zzz;
>HUDA

To co som Vam poslal ja, je pre pripad, ked chcete pristupovat cez smernik 
na jednotlive byty daneho prvku v poli, cize spravne takto:

objekt *smernik;
unsigned char *pristup;

smernik= (objekt*)malloc(xxx * sizeof(OBJEKT));

pristup = (unsigned char*)(smernik+n); // n<xxx

Adresa v smernik+n sa pocita tak, ze sa zoberie bazova adresa z malloc a k 
nej sa pripocitavaju nasobky velkosti objektu, v zavislosti od toho, ku 
ktoremu prvku pristupujete.
Ak potrebujete napr. low alebo high byte tohto konkretneho prvku pola, tak 
potrebujete pointer na byte, ktory nastavite na tuto adresu.

A.

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.






Další informace o konferenci Hw-list