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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 26 lip 2025, o 09:19


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 29 ] 
    Autor Wiadomość
    PostNapisane: 17 maja 2020, o 19:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Witam.

    Mam pytanie odnośnie zrozumienia wskażników?
    Pytanie dotyczy zrozumienia deklaracji zmiennej wskażnikowej np:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    rozumiem że wsk jest to zmienna wskaznikowa typu char i będzie wskazywała w przyszłości na jakieś komórki pamięci czy tak?

    ale np. pojawia się w pewnym fragmencie kodu zapis:

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


    To jak ja mam rozumieć tą gwiazdkę kiedy wiem czy jest do działanie w zakresie określenia deklaracji a jak mam rozumieć kiedy gwiazdka określa działanie sprawdzające np weż sprawdż
    jaka jest wartość komórki tzn. czy w/w zapis to deklaracja czy sprawdzenie czy wpisanie w komórkę pamięci o wartości określającej przez wsk wartość buf....



    Ostatnio edytowano 17 maja 2020, o 19:22 przez AKSELINEK, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 19:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 324
    Lokalizacja: Rybnik
    Pomógł: 23

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

    przypisujesz wartość zmiennej buf.
    Jak się mylę, to niech mnie ktoś poprawi.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 19:28 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    No tak ale można robić deklaracje zmiennej i od razu zapisywać w komórkę pamięci określoną przez wsk wartość buf, to znaczy że wartość buf zostanie zapisana na komórkę pamięci o wartości 0???

    Proszę mi rozpisać dla w/w przypadku jaki jest adres komórki i jaka jej wartość?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 19:41 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 324
    Lokalizacja: Rybnik
    Pomógł: 23

    Zajrzyj do tego wątku, to może ci to coś rozświetli

    topic22851.html

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 19:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    No ok przypisuję wartość zmiennej buf na wartość komórki określającej przez wsk no dobra ok wartość komórki to buf ale jaki jest adres czy 0?

    no to może jak to jest w przykładzie?

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



    Ostatnio edytowano 17 maja 2020, o 20:02 przez AKSELINEK, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 19:59 
    Offline
    Użytkownik

    Dołączył(a): 11 sty 2015
    Posty: 166
    Pomógł: 24

    mario2015 napisał(a):
    Po prostu do zmiennej wskaźnikowej
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    przypisujesz wartość zmiennej buf.
    Jak się mylę, to niech mnie ktoś poprawi.


    Niestety mylisz się.
    Przypisuje adres buf.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    to co dokładnie dzieje się się w tej linijce?

    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: 17 maja 2020, o 20:07 
    Offline
    Użytkownik

    Dołączył(a): 11 sty 2015
    Posty: 166
    Pomógł: 24

    do wsk przypisany jest adres na pierwszą daną tablicy buf.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:18 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 324
    Lokalizacja: Rybnik
    Pomógł: 23

    A kto powiedział, że zmienna buf to tablica?

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    A no to mi trochę rozjaśniłeś to do wsk przypisany jest adres z pierwszego elementu tablicy buf ale myli mnie ta * to co ona oznacza czy to jest deklaracja że pojawia się taka zmienna?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:21 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    mario2015 napisał(a):
    A kto powiedział, że zmienna buf to tablica?

    Dobry styl programowania

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:23 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    No ja rozumiem dobry styl ok. Ale nie rozumiem kiedy * określa deklarację czyli że będzie taka zmienna a kiedy jest wykonywanie działanie na * ? i jak jest w tym przypadku?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:24 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    W tym przypadku masz deklaracje z inicjalizacją w jednym...

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

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

    No to tutaj jest dokładnie tak samo.

    ------------------------ [ Dodano po: 2 minutach ]

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

    Czy to Ci coś rozjaśnia? I czy widzisz różnicę?

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:28 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    A to tak można? to czego nie oznaczyli * inaczej dla deklaracji a inaczej dla inicjalizacji bo to mnie wprowadza w błąd......
    Poprostu myli mnie * bo ona raz oznacza deklaracje zmiennej dla określania w przyszłości komórek pamięci a za chwile * robi jakieś tam działenie ...
    I dlatego mnie to zamieszało ...

    Czyli można zapisać tak:

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


    Dobrze zrozumiałem tę lekcję czy dalej bujam się w tej * bez zrozumienia tematu?



    Ostatnio edytowano 17 maja 2020, o 20:35 przez AKSELINEK, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:34 
    Offline
    Użytkownik

    Dołączył(a): 11 sty 2015
    Posty: 166
    Pomógł: 24

    To nie jest takie trudne.
    Tam gdzie przed * masz typ to masz deklarację.
    Sama * nie oznacza deklaracji. Oznacza tylko że zadeklarowana zmienna to wskaźnik.



    Ostatnio edytowano 17 maja 2020, o 20:37 przez auers, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:37 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    AKSELINEK napisał(a):
    A to tak można? to czego nie oznaczyli * inaczej dla deklaracji a inaczej dla inicjalizacji bo to mnie wprowadza w błąd......
    Poprostu myli mnie * bo ona raz oznacza deklaracje zmiennej dla określania w przyszłości komórek pamięci a za chwile * robi jakieś tam działenie ...

    Nie robi jakiegoś tam działania. Tylko mówi: "weź wartość z komórki na którą wskazuję i zrób z nią to co trzeba" ;-)
    Albo... "udaj się pod adres wpisany do wsk i tam już działaj..."

    A zmienną możesz albo tylko zadeklarować albo zadeklarować i zainicjować.
    Po czym poznać co jest co?
    Jak na początku przed nazwą zmiennej masz jej typ to znaczy że to deklaracja. A jak wystąpi jeszcze znak = i coś po prawej stronie to znaczy że od razu tą zmienną inicjujesz tym co jest po prawej stronie znaku równości.

    ------------------------ [ Dodano po: 2 minutach ]

    AKSELINEK napisał(a):
    Czyli można zapisać tak:

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


    Dobrze zrozumiałem tę lekcję czy dalej bujam się w tej * bez zrozumienia tematu?

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

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:43 
    Offline
    Użytkownik

    Dołączył(a): 11 sty 2015
    Posty: 166
    Pomógł: 24

    MirkoT napisał(a):
    Jak na początku przed nazwą zmiennej masz jej typ to znaczy że to deklaracja. A jak wystąpi jeszcze znak = i coś po prawej stronie to znaczy że od razu tą zmienną inicjujesz tym co jest po prawej stronie znaku równości.

    Czyli:
    - deklaracja mówi kompilatorowi co to za zmienna, jakiego typu.
    - inicjalizacja przypisuje zmiennej wartość początkową.
    Ot cała tajemnica deklaracji i inicjalizacji.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 20:45 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    auers napisał(a):
    MirkoT napisał(a):
    Jak na początku przed nazwą zmiennej masz jej typ to znaczy że to deklaracja. A jak wystąpi jeszcze znak = i coś po prawej stronie to znaczy że od razu tą zmienną inicjujesz tym co jest po prawej stronie znaku równości.

    Czyli:
    - deklaracja mówi kompilatorowi co to za zmienna, jakiego typu.
    - inicjalizacja przypisuje zmiennej wartość początkową.
    Ot cała tajemnica deklaracji i inicjalizacji.

    Tak jest! I jeszcze można je połączyć w jedno. ;-)

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 21:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    No dobrze ale parę linijek dalej pojawia się zapis:

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

    i ta kochana * jest też przed zmienną ale to nie jest delaracja ???? tylko działanie czy tak??



    Ostatnio edytowano 17 maja 2020, o 21:05 przez AKSELINEK, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 21:04 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    No i Twoim zdaniem co to oznacza?

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 21:08 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Moim zdaniem * oznacza działanie zwiększ o 1 buf i zapisz tam wartość zmiennej c....



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

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    Prawie dobrze ;-)

    ------------------------ [ Dodano po: 2 minutach ]

    Ta gwiazdka oznacza udaj się pod adres jaki pokazuje wskaźnik i wpisz to co jest po prawej stronie znaku równości, czyli w tym przypadku jakiś znak. A następnie zwiększ wartość wskaźnika o jeden (ale to robią te dwa ++)

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 21:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    No dzięki za cenne wskazówki muszę się przespać z tym problemem ale może jestem o krok od zrozumienia ;)
    Przemyśle to i jeszcze coś dopytam :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 21:19 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    Tego Ci życzę :-)

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 maja 2020, o 21:32 
    Offline
    Użytkownik

    Dołączył(a): 11 sty 2015
    Posty: 166
    Pomógł: 24

    AKSELINEK napisał(a):
    Moim zdaniem * oznacza działanie zwiększ o 1 buf i zapisz tam wartość zmiennej c....

    Tak dla ścisłości, tu nie chodzi o zwiększanie buf. Tylko zwiększenie adresu o 1, czyli wskazanie na kolejny element w tablicy buf.
    A kolejność działań jak już wskazał MirkoT, odwrotna.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 maja 2020, o 19:56 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Bardzo dziękuję za cenną lekcję i na pewno lepiej zrozumiałem temat.
    Z lekcji wyciągnąłem wnioski błąd mojego myślenia polegał na tym że do zmiennej
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    zostaje wpisywany adres komórki a nie wartość.
    I druga bardzo ważna sprawa jak podpowiedział kolega auers - jeśli przed zmienną jest typ to to odróżnia deklaracje a w inicjalizacji to jest już zapis *wsk i to ważny moment dla zrozumienia istoty tematu. :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 maja 2020, o 20:20 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    W inicjalizacji jest wsk
    jeżeli użyjesz *wsk to nie zainicjalizujesz wskaźnika ale wpiszesz wartość w komórkę na którą ten wskaźnik pokazuje...

    _________________
    Jestem początkujący i moje porady mogą być błędne



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 maja 2020, o 20:41 
    Offline
    Użytkownik

    Dołączył(a): 11 sty 2015
    Posty: 166
    Pomógł: 24

    MirkoT napisał(a):
    W inicjalizacji jest wsk
    jeżeli użyjesz *wsk to nie zainicjalizujesz wskaźnika ale wpiszesz wartość w komórkę na którą ten wskaźnik pokazuje...

    Chyba że inicjacja jest razem z deklaracją, a chyba do tego odnosi się Akselinek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 maja 2020, o 20:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Tak tak rozumiem to tylko na początku zmylił mnie całkowicie zapis zapis :

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


    i była to deklaracja i tu *wsk ma inne znaczenie niż póżniej *wsk i tu dopiero zrozumiałem że te dwa znaczenia się różnią.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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