ATNEL tech-forum
https://forum.atnel.pl/

Specyfikator "Const" i wskażniki
https://forum.atnel.pl/topic22961.html
Strona 1 z 1

Autor:  MisterWhite [ 26 mar 2020, o 16:35 ]
Tytuł:  Specyfikator "Const" i wskażniki

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

Autor:  mirekk36 [ 26 mar 2020, o 17:08 ]
Tytuł:  Re: Specyfikator "Const" i wskażniki

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

Autor:  andrews [ 26 mar 2020, o 18:32 ]
Tytuł:  Re: Specyfikator "Const" i wskażniki

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 ;)

Autor:  Zealota [ 26 mar 2020, o 18:53 ]
Tytuł:  Re: Specyfikator "Const" i wskażniki

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?

Autor:  andrews [ 26 mar 2020, o 19:12 ]
Tytuł:  Re: Specyfikator "Const" i wskażniki

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

Autor:  MisterWhite [ 26 mar 2020, o 20:08 ]
Tytuł:  Re: Specyfikator "Const" i wskażniki

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

Autor:  andrews [ 26 mar 2020, o 21:09 ]
Tytuł:  Re: Specyfikator "Const" i wskażniki

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:  mirekk36 [ 27 mar 2020, o 00:03 ]
Tytuł:  Re: Specyfikator "Const" i wskażniki

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 ;)

Autor:  gordon10 [ 13 kwi 2020, o 11:52 ]
Tytuł:  Re: Specyfikator "Const" i wskażniki

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" ;)

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/