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 w 2025? 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 30 kwi 2025, o 06:03


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
    Autor Wiadomość
    PostNapisane: 1 mar 2017, o 18:44 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    Witam,
    utrwalam wiadomości na temat wskaźników i chciałbym się upewnić czy mam rację.
    Mam taki prosty kod jak na listingu poniżej.

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


    Funkcja fun jako argument przyjmuje wskaźnik na uint32_t, po wejściu do funkcji fun przepisuję do zmiennej lokalnej wartość i wysyłam na terminal wartość 500. Wszystko elegancko działa.

    Teraz drugi przypadek. Robię podobnie tylko parametrem jest teraz struktura:

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


    Na poczatku tworzę strukturę, następnie pisze deklarację funkcji. W kolejnym kroku inicjalizuje strukturę i wywołuję w pętli głównej.
    Jak poprzednio, w funkcji fun tworzę taki sam typ strukturalny i w kolejnym kroku przypisuję wskaźnik, na wcześniej ustawioną globalną strukturę. Ale przez takie przypisanie: lokalny_parametr = *param; pola struktury się nie "ustawią" na wartości takie jak w zmiennej globalnej prawda?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 mar 2017, o 20:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 wrz 2013
    Posty: 74
    Lokalizacja: Sierakowice/Gdańsk
    Pomógł: 9

    Z tego co wiem, to można zrobić tak jak zrobiłeś. Wszystkie dane zostaną przepisane ze struktury znajdującej się pod adresem "param", do struktury lokalnej "lokalny_parametr". Zmienne samodzielnie zdefiniowanych typów (w tym przypadku struktura) można przepisywać tak samo jak zwykłe zmienne np. jak: int, char, float (z tablicami jest już inaczej).

    Ale jak już wyskrobałeś taki fajny przykład, to najlepszym upewnieniem jest uruchomienie również niego i wyświetlenie wyników działania programu na własnej siatkówce oka :D.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 mar 2017, o 22:51 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    Hmm... sprawdziłem podobny kod i przepisało... czyli tylko w przypadku tablic jest inaczej, jeśli chodzi o struktury to można je kopiować bezpośrednio lub przez wskaźniki... na to przynajmniej wychodzi :)

    ------------------------ [ Dodano po: 3 minutach ]

    taki kod przetestowałem:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    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: 2 mar 2017, o 11:18 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    Sprawdziłem dokładnie i standard języka C pozwala na kopiowanie dwóch struktur tego samego typu przez operator "=" czyli jeżeli mamy jakąś strukturę stru_A, której składniki sa zainicjowane wartościami i nowo utworzoną strukturę stru_B to można przekopiować wartości składników ze struktury A do B w taki prosty sposób: stru_B = stru_A. Nie wolno jednak porównywać dwóch struktur np. tak: if( stru_A == stru_B).....

    Inaczej jest z tablicami, tych nie można tak łatwo przepisywać, jedna do drugiej. Ale jeżeli by się uprzeć to można zamknąć tablice w strukturę i elegancko kopiować jak opisałem powyżej :)



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

    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