No tak kolega karlowic napisał : W wywołaniu funkcji UART_RX_STR_EVENT( buf ) buf jest wskaźnikiem do tej tablicy wskazujący pierwszy jej element , ale ja tu nie mogę czegoś zrozumieć:
buf to jest tablica - czy tak? mająca do 256 znaków w rozumieniu pojęcia wskaznika mamy do czynienia wskazanie na komórkę pamięci - jaką czy w rozumieniu UART_RX_STR_EVENT( buf )
czyli wkaznik wskazać może na funkcje i kolejny nie zrozumialy fakt? jak buf będzie miał w sobie np. 256 zapełnionych znaków w tablicy to który konkretnie znak tej tablicy wskaże w/w komórkę
pamięci odpowiadającej wskażnikowi do w/w funkcji?
Przepraszam ja może żle zrozumiałem istotę tematu proszę mnie poprawić jeśli coś zle rozumuję?
------------------------ [ Dodano po: 5 minutach ]AKSELINEK napisał(a):
No tak kolega karlowic napisał : W wywołaniu funkcji UART_RX_STR_EVENT( buf ) buf jest wskaźnikiem do tej tablicy wskazujący pierwszy jej element , ale ja tu nie mogę czegoś zrozumieć:
buf to jest tablica - czy tak? mająca do 256 znaków w rozumieniu pojęcia wskaznika mamy do czynienia wskazanie na komórkę pamięci - jaką czy w rozumieniu UART_RX_STR_EVENT( buf )
czyli wkaznik wskazać może na funkcje i kolejny nie zrozumialy fakt? jak buf będzie miał w sobie np. 256 zapełnionych znaków w tablicy to który konkretnie znak tej tablicy wskaże w/w komórkę
pamięci odpowiadającej wskażnikowi do w/w funkcji?
Przepraszam ja może żle zrozumiałem istotę tematu proszę mnie poprawić jeśli coś zle rozumuję?
Teraz wyobraź sobie że przekazujesz tą tablicę do funkcji, (tak jak zwykłą zmienną). Tablica ta musiała by być wówczas skopiowana na stosie. Łatwo ten stos przepełnić i program idzie " w las".
Dlatego do funkcji nie jest przekazywana cała tablica 256 bajtów tylko sam wskaźnik, czyli adres tej tablicy o długości 2 bajtów. I to wszystko.
Stąd w definicji funkcji masz właśnie jako parametr wskaźnik (adres).
To jak buf będzie miał np 256 znaków to który znak wskaże konkretna pamięc w rozumowaniu wskaznika funkci
Jeszcze raz uproszczę rozumowanie b o namieszałem...
Ja rozumuje w ten sposób być może złe - funkcja UART_RX_STR_EVENT( buf ) jako jakiś element pamięci gdześ się znajduje , a to gzie dokładnie określa wskażnik buf czy tak?
adres tej pamięci jest dwubajtowy i przekazuje go buf ale buf moze mieć 256 znaków to które konkretnie znaki buf to przekazują buf[0] i buf[1] czy jakieś inne?
i jeszcze jedno niezrozumiałe dla mnie : to jak to jest raz buf jest tablicą a raz zmienną globalną ??