Cześć wszystkim,
mam pytanko, czy poprawne będzie zainicjalizowanie zmiennej w poniższy sposób:
uint16_t * paucTest[2];
czy osobno powinnam stworzyć tablicę:
uint16_t aucTest[2];
i wskaźnik na nią
unit16_t *pucTest = aucTest[0];
?
Cześć wszystkim,
mam pytanko, czy poprawne będzie zainicjalizowanie zmiennej w poniższy sposób:
uint16_t * paucTest[2];
czy osobno powinnam stworzyć tablicę:
uint16_t aucTest[2];
i wskaźnik na nią
unit16_t *pucTest = aucTest[0];
?
Oba sposoby są błędne (ew. pierwszy dobry, jeśli robisz coś innego niż opisałaś)
uint16_t * a[2]; // tablica 2 wskaźników na uint16_t
uint16_t b[2]; // tablica 2 uint16_t
uint16_t (*c)[2]; // wskaźnik na tablicę 2 uint16_t
uint16_t *d1 = &b[0]; // ustawienie wskaźnika na pierwszy element tablicy
uint16_t *d2 = b; // ustawienie wskaźnika na pierwszy element tablicy
uint16_t (*e)[2] = &b; // ustawienie wskaźnika na tablicę
Ok, zależy mi na tablicy 2 wskaźników na uint16_t, czyli inicjalizuję:
uint16_t * pa[2];
i teraz jeśli odnoszę się do wartości pierwszej zmiennej pod wskaźnikiem (oczywiście wcześniej zainicjalizowanej), to mogę napisać:
*pa[0]
i odpowiednio drugiej:
*pa[1]
a gdy operuje na wskaźnikach to po prostu:
pa[0], pa[1]
?
Tak, tylko naturalnie obie wartości pierw muszą być zainicjalizowane.