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



Teraz jest 9 maja 2026, o 03:52


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 16 paź 2015, o 15:36 
Offline
Użytkownik

Dołączył(a): 27 cze 2015
Posty: 60
Pomógł: 0

Witam po raz kolejny:)
Mam problem z zrozumieniem funkcji do zamiany liczb "int" na znaki ASCI.

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


W sumie to zaskoczyl mnie zaraz sam początek czyli wskaźnik na funkcje, ale o tym spróbuje poczytać później, jakie ma to zalety, albo czemu użyto wskaźnika.

Do funkcji przekazujemy 4 argumenty z czego drugi jest wskaźnikiem i z tym mam problem.
Przekazujemy do funkcji adres 1 elementu tablicy "bufor" i w pierwszej linijce definiujemy następny wskaźnik i jako wartość przypisujemy mu adres tego pierwszego elementu tablicy "bufor"? Dobrze rozumiem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2015, o 16:04 
Offline
Moderator
Avatar użytkownika

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

shark31 napisał(a):
jako wartość przypisujemy mu adres tego pierwszego elementu tablicy "bufor"?

Robimy kopię wskaźnika, żeby pod koniec funkcji go użyć ... zobacz że po drodze jeden z nich się zmienia a chcemy zwrócić jako rezultat funkcji wskaźnik na początek tegoż bufora ;)

_________________
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: 16 paź 2015, o 16:59 
Offline
Użytkownik

Dołączył(a): 27 cze 2015
Posty: 60
Pomógł: 0

No dobrze ale mi chodzi o to czy dobrze rozumiem jak to się odbywa. Bo samo "str" bez "*" oznacza adres komórki wskaźnika, a "*strp" oznacza wartość w jakiejś komórce.
Wieć tutaj przypisujemy adres "*str" jako wartość "*strp" tak? A dalej w tej funkcji dzięki inkrementacji wartości pod wskaźnikiem "*strp" przechodzimy do następnych adresów w buforze?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2015, o 17:46 
Offline
Moderator
Avatar użytkownika

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

shark31 napisał(a):
ale mi chodzi o to czy dobrze rozumiem jak to się odbywa. Bo samo "str" bez "*" oznacza adres komórki wskaźnika, a "*strp" oznacza wartość w jakiejś komórce.


No nie rozumiesz ,..... a wiesz dlaczego ? Bo nie doczytałeś nie poświęciłeś uwagi na dobre zrozumienie czym różni się DEFINICJA od DEKLARACJI


char * wsk;

co to jest ? .... wiesz ? .... to jest DEKLARACJA a nie że jak piszesz:
shark31 napisał(a):
"*strp" oznacza wartość w jakiejś komórce.


w ramach deklaracji gwiazdka oznacza, że to jest WSKAŹNIK rozumiesz ? ... to samo się tyczy argumentów w funkcji

fun( char * wsk );

tutaj też *wsk nie ma NIC WSPÓLNEGO ze wskazywaniem czegoś w pamięci, to jest TYLKO deklaracja wskaźnika jako argumentu. Poczytaj też czym różnią się argumenty formalne od aktualnych bo to też chyba się tobie jeszcze mocno myli

-------------------------------

reasumując, tutaj:

char *int_to_str(int val, char *str, int8_t fw, char znak_wiodacy)

*str

mówi tylko o tym, że do funkcji ma trafić wskaźnik, a wewnątrz samej funkcji już możemy go używać,

albo jako

*str - i dopiero teraz wskazuje on na jakąś komórkę pamięci

albo jako

str - i teraz jest to TYLKO adres argumentu w pamięci RAM

shark31 napisał(a):
Wieć tutaj przypisujemy adres "*str" jako wartość "*strp" tak?


Tutaj to ustalamy, że wskaźnik o nazwie strp - będzie miał wartość wskaźnika str - czyli na starcie funkcji jeden i drugi będzie wskazywał dokładnie na tę samą komórkę w pamięci RAM

_________________
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  
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 1 gość


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