Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 6 lut 2026, o 03:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 13 lis 2012, o 22:23 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Te dodatkowe nawiasy nic nie zmieniają

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2012, o 22:40 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Przecież to w obu przypadkach adres elementu o indeksie "index" (adres elementu tablicy). Pobierasz ten adres i wyciągasz to co jest pod tym adresem zapisane a pod nim jest zapisany wskaźnik do stringa. [] ma wyższy priorytet niż &

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2012, o 22:52 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Ale sama tablica wskaźników jest w pamięci programu i dlatego aby odczytać jej zawartość musimy sięgnąć do funkcji pgm_read_word()

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2012, o 23:10 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27449
Lokalizacja: Szczecin
Pomógł: 1045

Ja się zawsze zastanawiam - czy to nie prościej sobie po prostu sprawdzić ? przecież od razu wyszłoby, że jeden i drugi zapis to to samo. Tzn dokładniej mówiąc to:

&MenuItemPointers[index]

jest to samo co to:

&(MenuItemPointers[index])

------------------------ [ Dodano po: kilkunastu sekundach ]

robiw napisał(a):
To jasne, tyle, że wydaje się, iż jako argument tej funkcji może wystąpić sama nazwa tablicy bez operatora & bo przecież to tablica wskaźników. Już się chyba zakręciłem z tymi wskaźnikami ;-)...robiw


No to spróbuj - nie masz jakiegoś LCD pod ręką ? jak pominiesz & to dostaniesz z kolei SIECZKĘ na LCD

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2012, o 23:12 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27449
Lokalizacja: Szczecin
Pomógł: 1045

przecież masz tablicę wskaźników

a funkcja pgm_read_word() potrzebuje też wskaźnika

zatem dzięki & pobierasz wskaźnik do elementu tablicy (pożądanego elementu) i dopiero ta funkcja odczytuje umieszczony tam wskaźnik stringa i jeszcze robisz rzutowanie na (char*)

------------------------ [ Dodano po: 5 minutach ]

robiw napisał(a):
PS.
Późno już, więc z myśleniem krucho...ale przecie nazwa tablicy jest wskaźnikiem, więc czemu &?


pewnie że nazwa tablicy jest wskaźnikiem więc mógłbyś spokojnie napisać tak

pgm_read_word( MenuItemPointers );

ale odwołasz się TYLKO do pierwszego elementu

a jak wskazujesz indeks - to koniec

MenuItemPointers[x]

nie jest już wskaźnikiem - bo do czego hmmm?

dlatego trzeba użyć operatora pobrania adresu

&MenuItemPointers[x]

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2012, o 23:32 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27449
Lokalizacja: Szczecin
Pomógł: 1045

robiw napisał(a):
Muszę to przeczytać ponownie jutro raczej ;-)...a to link do dyskusji:

USART_TxString_P() expects an unsigned char*.
MenuItemPointers[x] is an unsigned char*.

So you need to pass the menu item (as stated by Lajon) without the '&'.
If you use &MenuItemPointers[x] you will pass the address of the pointer to the string; this is wrong.

Many thanks for your tutorial Dean!

http://www.avrfreaks.net/index.php?name ... ic&t=38003

robiw


Widzisz - hmm mieszasz - tzn czytasz ale nie za bardzo też już może skojarzyłeś o czym czytasz.

Jeśli miałbym przekazać taki wskaźnik do stringa do funkcji lcd_str() do której mam podać element tablicy to wtedy zrobić to trzeba bez & czyli:

lcd_str( MenuItemPointers[2] );

zakładając OCZYWIŚCIE że ta tablica jest panie kochany w RAM a nie we FLASH

ale jeśli do funkcji pgm_read_word() to już MUSISZ dać & .... coś ci się mocno pokręciło albo zapomniało jak to jest z tą funkcją po prostu.

robiw napisał(a):
PS.
A może też tak: MenuItemPointers+x :-)?

Pewnie że można, tylko jak będziesz miał różnej długości stringi to życzę powodzenia w takim pisaniu kodu.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO