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



Teraz jest 29 mar 2024, o 14:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 26 mar 2020, o 16:35 
Offline
Użytkownik

Dołączył(a): 13 mar 2013
Posty: 123
Pomógł: 1

Witam
Przepraszam za trywialne zapewne pytanie , ale bardzo bym prosił o wyjaśnienie następującego tematu:
Wyobraźmy sobie że mamy jakiś string:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tworzymy do niego wskaźnik wsk:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dotąd OK. Ale teraz dołączmy do tego specyfikatory "const"
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I teraz pytanie - czy zapis ten oznacza iż wartością stałą , nie podlegającą zmianie jest wartość wskazywana przez wskaźnik , czyli str[], który musi zawsze zawierać teraz "Name", czy też ,że wartością niezmienną jest wartość samego wskaźnika *wsk i możemy sobie napisać
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

co będzie oznaczać,że wskaźnik dalej będzie wskazywać ten sam adres, natomiast my zmienimy zawartość komórki pod tym adresem.
Reasumując - czy zapis
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

oznacza ,że niezmienny jest adres na który wskazuje wskaźnik, czy też stała musi być wartość która jest "wyłuskiwana" przez ten wskaźnik?
Pozdr
W



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2020, o 17:08 
Offline
Moderator
Avatar użytkownika

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

stała i niezmienna wartość wskaźnika
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



stała i niezmienna wartość wskaźnika - a do tego stała jest wartość na którą wskazuje ten wskaźnik
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



(to stosuje się np do tablic wskaźników w PROGMEM)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


poczytaj sobie na blogu ;)

http://mirekk36.blogspot.com/2013/11/ta ... ogmem.html

_________________
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: 26 mar 2020, o 18:32 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

mirekk36 napisał(a):
stała i niezmienna wartość wskaźnika - a do tego stała jest wartość na którą wskazuje ten wskaźnik
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ach, ten pośpiech...
Może to się i skompiluje, ale wskaźnik raczej nie będzie stały. Chyba jednak powinno być w nieco innej kolejności:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

...a na blogu już jest dobrze ;)

Wiem, że trochę się czepiam. Pozornie różnica niewielka, a jednak dość istotna ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2020, o 18:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

aaaaaaa dopiero teraz zakumałem.....
Czyli wersja dla tłuków (dla mnie :) const przed gwiazdką stały wskaźnik, const przed nazwą zmiennej stała wartość?
czyli:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to stała wartość, ale wskaźnik zmienny? Zmianę wskaźnika możemy zrobić, ale wartość przy zainicjowanym wskaźniku (miejscu w pamięci) nie może być zmieniana?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2020, o 19:12 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2020, o 20:08 
Offline
Użytkownik

Dołączył(a): 13 mar 2013
Posty: 123
Pomógł: 1

Wielkie dzięki. Teraz nie sposób się pomylić. Jeszce tylko gwoli ścisłości :
Rozumiem ,że obecnie GCC przy umieszczeniu danych we flashu wymaga zarówno stałego wskaźnika jak i danych ?
Pzdr.
W



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 mar 2020, o 21:09 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

To zależy, jak zadeklarujesz zmienne. Ogólnie to, co umieszczasz we FLASH musi być const. Możliwe są różne kombinacje, np.:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zmienne umieszczane w RAM nie muszą być const, ale mogą, Nie jest to raczej zalecane w 8-bitowych AVR - pamięci FLASH jest zwykle więcej do dyspozycji, więc to co stałe powinno być we FLASH. Niemniej (przykładowo) można tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 mar 2020, o 00:03 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
Ach, ten pośpiech...

andrews - wielkie ukłony - twoje sokole oko zawsze widać na forum ! ;) dziękuję za zwrócenie uwagi ;) oczywiście pisałem na szybko i ... no właśnie.

------------------------ [ Dodano po: 1 minucie ]

Zealota napisał(a):
to stała wartość, ale wskaźnik zmienny? Zmianę wskaźnika możemy zrobić, ale wartość przy zainicjowanym wskaźniku (miejscu w pamięci) nie może być zmieniana?

Dokładnie TAK ;)

_________________
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 kwi 2020, o 11:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 148
Lokalizacja: KTT
Pomógł: 1

Fajny temat. :idea:
Przy okazji ja skorzystam i wkleję sobie te przykłady jako komentarz do pliku, bo też mi się zawsze to "merdało" ;)

_________________
Gordon



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: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO