<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=22961&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2020-04-13T11:52:25+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=22961&amp;mode</id>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2020-04-13T11:52:25+01:00</updated>
<published>2020-04-13T11:52:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=226130#p226130</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=226130#p226130"/>
<title type="html"><![CDATA[Re: Specyfikator &quot;Const&quot; i wskażniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=226130#p226130"><![CDATA[
Fajny temat. <img src="https://forum.atnel.pl/images/smilies/icon_idea.gif" alt=":idea:" title="Pomysł" />  <br />Przy okazji ja skorzystam i wkleję sobie te przykłady jako komentarz do pliku, bo też mi się zawsze to &quot;merdało&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 13 kwi 2020, o 11:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-03-27T00:03:35+01:00</updated>
<published>2020-03-27T00:03:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225615#p225615</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225615#p225615"/>
<title type="html"><![CDATA[Re: Specyfikator &quot;Const&quot; i wskażniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225615#p225615"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Ach, ten pośpiech...<br /></div><br />andrews - wielkie ukłony - twoje sokole oko zawsze widać na forum ! <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> dziękuję za zwrócenie uwagi <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> oczywiście pisałem na szybko i ... no właśnie.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Zealota napisał(a):</div><div class="quotecontent"><br />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?<br /></div><br />Dokładnie TAK <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 mar 2020, o 00:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2020-03-26T21:09:12+01:00</updated>
<published>2020-03-26T21:09:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225607#p225607</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225607#p225607"/>
<title type="html"><![CDATA[Re: Specyfikator &quot;Const&quot; i wskażniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225607#p225607"><![CDATA[
To zależy, jak zadeklarujesz zmienne. Ogólnie to, co umieszczasz we FLASH musi być <strong>const</strong>. Możliwe są różne kombinacje, np.:<br />[syntax=c]char str&#91;&#93; = &quot;Name&quot;; // dane umieszczone w RAM<br />char * wsk = str;    // wskaźnik umieszczony w RAM do danych w RAM<br /><br />const char str&#91;&#93; PROGMEM = &quot;Name&quot;; // dane umieszczone we FLASH<br />const char * wsk = str;            // wskaźnik umieszczony w RAM do danych we FLASH<br /><br />const char str&#91;&#93; PROGMEM = &quot;Name&quot;;     // dane umieszczone we FLASH<br />const char * const wsk PROGMEM = str;  // wskaźnik umieszczony we FLASH do danych we FLASH<br /><br />char str&#91;&#93; = &quot;Name&quot;;             // dane umieszczone w RAM<br />char * const wsk PROGMEM = str;  // wskaźnik umieszczony we FLASH do danych w RAM[/syntax]<br /><br />Zmienne umieszczane w RAM nie muszą być <strong>const</strong>, 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:<br />[syntax=c]const char str&#91;&#93; = &quot;Name&quot;; // dane umieszczone w RAM<br />const char * wsk = str;    // wskaźnik umieszczony w RAM do stałych danych w RAM[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 26 mar 2020, o 21:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisterWhite]]></name></author>
<updated>2020-03-26T20:08:20+01:00</updated>
<published>2020-03-26T20:08:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225605#p225605</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225605#p225605"/>
<title type="html"><![CDATA[Re: Specyfikator &quot;Const&quot; i wskażniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225605#p225605"><![CDATA[
Wielkie dzięki. Teraz nie sposób się pomylić. Jeszce tylko gwoli ścisłości : <br />Rozumiem ,że obecnie GCC przy umieszczeniu danych we flashu wymaga zarówno stałego wskaźnika jak i danych ?<br />Pzdr.<br />W<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1051">MisterWhite</a> — 26 mar 2020, o 20:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2020-03-26T19:12:52+01:00</updated>
<published>2020-03-26T19:12:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225603#p225603</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225603#p225603"/>
<title type="html"><![CDATA[Re: Specyfikator &quot;Const&quot; i wskażniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225603#p225603"><![CDATA[
[syntax=c]char * const wsk = str; // nie można zmienić wskaźnika, można zmienić dane, na które wskazuje<br /><br />char const * wsk = str; // lub<br />const char * wsk = str; // można zmienić wskaźnik, nie można zmienić danych, na które wskazuje<br /><br />char const * const wsk = str; // lub<br />const char * const wsk = str; // nie można zmienić ani wskaźnika, ani danych, na które wskazuje[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 26 mar 2020, o 19:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2020-03-26T18:53:28+01:00</updated>
<published>2020-03-26T18:53:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225602#p225602</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225602#p225602"/>
<title type="html"><![CDATA[Re: Specyfikator &quot;Const&quot; i wskażniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225602#p225602"><![CDATA[
aaaaaaa dopiero teraz zakumałem.....<br />Czyli wersja dla tłuków (dla mnie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> const przed gwiazdką stały wskaźnik, const przed nazwą zmiennej stała wartość?<br />czyli:<br />[syntax=c]char * const wsk = str;[/syntax]<br />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?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 26 mar 2020, o 18:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2020-03-26T18:32:04+01:00</updated>
<published>2020-03-26T18:32:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225601#p225601</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225601#p225601"/>
<title type="html"><![CDATA[Re: Specyfikator &quot;Const&quot; i wskażniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225601#p225601"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />stała i niezmienna wartość wskaźnika - a do tego stała jest wartość na którą wskazuje ten wskaźnik<br />[syntax=c]const char const *wsk = str;[/syntax]<br /></div><br />Ach, ten pośpiech...<br />Może to się i skompiluje, ale wskaźnik raczej nie będzie stały. Chyba jednak powinno być w nieco innej kolejności:[syntax=c]const char * const wsk = str;<br />// lub równoważnie<br />char const * const wsk = str;[/syntax]<br />...a na blogu już jest dobrze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Wiem, że trochę się czepiam. Pozornie różnica niewielka, a jednak dość istotna <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 26 mar 2020, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-03-26T17:08:25+01:00</updated>
<published>2020-03-26T17:08:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225599#p225599</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225599#p225599"/>
<title type="html"><![CDATA[Re: Specyfikator &quot;Const&quot; i wskażniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225599#p225599"><![CDATA[
stała i niezmienna wartość wskaźnika<br />[syntax=c]const char *wsk = str;  // tu nie musi być &amp; bo sama nazwa tablicy jest wskaźnikiem na jej pierwszy element<br /><br />const char *wsk = &amp;str&#91;2&#93;;   // tu już trzeba użyć operatora pobierania adresu[/syntax]<br /><br /><br />stała i niezmienna wartość wskaźnika - a do tego stała jest wartość na którą wskazuje ten wskaźnik <br />[syntax=c]const char const *wsk = str;[/syntax]<br /><br /><br />(to stosuje się np do tablic wskaźników w PROGMEM)<br /><br />[syntax=c]const napis1&#91;&#93; PROGMEM = &quot;napis1&quot;;<br />const napis2&#91;&#93; PROGMEM = &quot;napis2&quot;;<br /><br />const char const *tab&#91;&#93; PROGMEM = {<br />    napis1,<br />    napis2,<br />}[/syntax]<br /><br />poczytaj sobie na blogu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/11/tablica-wskaznikow-we-flash-progmem.html" >http://mirekk36.blogspot.com/2013/11/ta ... ogmem.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 mar 2020, o 17:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisterWhite]]></name></author>
<updated>2020-03-26T16:35:39+01:00</updated>
<published>2020-03-26T16:35:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225598#p225598</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225598#p225598"/>
<title type="html"><![CDATA[Specyfikator &quot;Const&quot; i wskażniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22961&amp;p=225598#p225598"><![CDATA[
Witam<br />Przepraszam za trywialne zapewne pytanie , ale bardzo bym prosił o wyjaśnienie następującego tematu:<br />Wyobraźmy sobie że mamy jakiś  string:<br />[syntax=c]char  str&#91;&#93; = &quot;Name&quot;;[/syntax]<br />Tworzymy  do niego wskaźnik wsk:<br />[syntax=c]char *wsk = &amp;str;[/syntax]<br />Dotąd OK. Ale teraz dołączmy do tego specyfikatory &quot;const&quot;<br />[syntax=c]const char *wsk = &amp;str;[/syntax]<br />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 &quot;Name&quot;, czy też ,że wartością niezmienną jest wartość samego wskaźnika *wsk i możemy sobie napisać <br />[syntax=c]*wsk = tab;[/syntax]<br />co będzie oznaczać,że wskaźnik dalej będzie wskazywać ten sam adres, natomiast my zmienimy zawartość komórki pod tym adresem.<br />Reasumując - czy zapis <br />[syntax=c]const char *wsk ;[/syntax]<br />oznacza ,że niezmienny jest adres na który wskazuje wskaźnik, czy też stała musi być wartość która jest &quot;wyłuskiwana&quot; przez ten wskaźnik?<br />Pozdr<br />W<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1051">MisterWhite</a> — 26 mar 2020, o 16:35</p><hr />
]]></content>
</entry>
</feed>