Hogy kell értelmezni C ben az alábbi pointer aritmetikát?
typedef struct {
fractional real;
fractional imag; }
fractcomplex;
// 1.
fractcomplex *p_cmpx = &sigCmpx[0] ;
fractional *p_real = &sigCmpx[0]. Real ;
//2
p_real = &sigCmpx[ (BLOCK_LENGTH/2) -1]. Real ;
p_cmpx = &sigCmpx[BLOCK_LENGTH-1] ;
//3
(*p_cmpx). Real = (*p_real--) ;
(*p_cmpx--). Imag = 0x0000;
Amit értek belőle, illetve nem értek:
1. ben: két mutatót készítek. Egyik a SigCpmx[0] -ik elemére mutat, és fractcomplex típusú lesz. Másik fractional típusú és SigCpmx[0]. Real elemére mutat.
Miért egyik esetben &sigCmpx[0]. Real, másik esetben &sigCmpx[0] a mutató beállítása?
2. ben. Hasonló a kérdés 1 hez.
3. ban: a mutató zárójelezése mit jelent itt? Hogyan működik a fenti kódrészlet?
1. kérdés: precedencia (azaz sorrend). A realnál megkeresi először a sigcmpx tömb 0. tagját, utána a pont miatt annak veszi a real nevű tagját. Ezután képezi az & ennek a tagnak a címét.
2. kérdés: ugyanaz, mint elsőben, előbb elugrik a tömb eleméhez, veszi annak adattagját, és utána képzi a tag címét.
3.: Ha zárójelezed, az azt jelenti, hogy először elmegy a p_cmpx címre (második esetben utána ki is von belőle 1-et...), és csak utána veszi az adattagját.
A hogyan működikre azt tudom mondani, csak enyhe ötleteim vannak, mi lehet ez, talán valami tört együtthatójú komplexekkel dolgozik, de a fene tudja...
3-hoz ekvivalens kódrészlet:
p_cmpx->Real = *p_real;
--p_real;
p_cmpx->Imag = 0;
--p_cmpx;
Ez egy ciklusmag része?
Ha igen, mi a ciklusfeltétel?
Talán a blokk alsó felének valós részeit átmásolja a blokk felső felébe, a képzetest meg kinullázza.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!