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

Pytanie o wskazniki?
https://forum.atnel.pl/topic23136.html
Strona 1 z 1

Autor:  AKSELINEK [ 17 maja 2020, o 19:09 ]
Tytuł:  Pytanie o wskazniki?

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....

Autor:  mario2015 [ 17 maja 2020, o 19:20 ]
Tytuł:  Re: Pytanie o wskazniki?

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.

Autor:  AKSELINEK [ 17 maja 2020, o 19:28 ]
Tytuł:  Re: Pytanie o wskazniki?

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ść?

Autor:  mario2015 [ 17 maja 2020, o 19:41 ]
Tytuł:  Re: Pytanie o wskazniki?

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

topic22851.html

Autor:  AKSELINEK [ 17 maja 2020, o 19:58 ]
Tytuł:  Re: Pytanie o wskazniki?

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.

Autor:  auers [ 17 maja 2020, o 19:59 ]
Tytuł:  Re: Pytanie o wskazniki?

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.

Autor:  AKSELINEK [ 17 maja 2020, o 20:05 ]
Tytuł:  Re: Pytanie o wskazniki?

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.

Autor:  auers [ 17 maja 2020, o 20:07 ]
Tytuł:  Re: Pytanie o wskazniki?

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

Autor:  mario2015 [ 17 maja 2020, o 20:18 ]
Tytuł:  Re: Pytanie o wskazniki?

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

Autor:  AKSELINEK [ 17 maja 2020, o 20:20 ]
Tytuł:  Re: Pytanie o wskazniki?

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?

Autor:  MirkoT [ 17 maja 2020, o 20:21 ]
Tytuł:  Re: Pytanie o wskazniki?

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

Dobry styl programowania

Autor:  AKSELINEK [ 17 maja 2020, o 20:23 ]
Tytuł:  Re: Pytanie o wskazniki?

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?

Autor:  MirkoT [ 17 maja 2020, o 20:24 ]
Tytuł:  Re: Pytanie o wskazniki?

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ę?

Autor:  AKSELINEK [ 17 maja 2020, o 20:28 ]
Tytuł:  Re: Pytanie o wskazniki?

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?

Autor:  auers [ 17 maja 2020, o 20:34 ]
Tytuł:  Re: Pytanie o wskazniki?

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.

Autor:  MirkoT [ 17 maja 2020, o 20:37 ]
Tytuł:  Re: Pytanie o wskazniki?

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.

Autor:  auers [ 17 maja 2020, o 20:43 ]
Tytuł:  Re: Pytanie o wskazniki?

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.

Autor:  MirkoT [ 17 maja 2020, o 20:45 ]
Tytuł:  Re: Pytanie o wskazniki?

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

Autor:  AKSELINEK [ 17 maja 2020, o 21:03 ]
Tytuł:  Re: Pytanie o wskazniki?

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??

Autor:  MirkoT [ 17 maja 2020, o 21:04 ]
Tytuł:  Re: Pytanie o wskazniki?

No i Twoim zdaniem co to oznacza?

Autor:  AKSELINEK [ 17 maja 2020, o 21:08 ]
Tytuł:  Re: Pytanie o wskazniki?

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

Autor:  MirkoT [ 17 maja 2020, o 21:09 ]
Tytuł:  Re: Pytanie o wskazniki?

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

Autor:  AKSELINEK [ 17 maja 2020, o 21:17 ]
Tytuł:  Re: Pytanie o wskazniki?

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

Autor:  MirkoT [ 17 maja 2020, o 21:19 ]
Tytuł:  Re: Pytanie o wskazniki?

Tego Ci życzę :-)

Autor:  auers [ 17 maja 2020, o 21:32 ]
Tytuł:  Re: Pytanie o wskazniki?

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:  AKSELINEK [ 18 maja 2020, o 19:56 ]
Tytuł:  Re: Pytanie o wskazniki?

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. :)

Autor:  MirkoT [ 18 maja 2020, o 20:20 ]
Tytuł:  Re: Pytanie o wskazniki?

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...

Autor:  auers [ 18 maja 2020, o 20:41 ]
Tytuł:  Re: Pytanie o wskazniki?

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.

Autor:  AKSELINEK [ 18 maja 2020, o 20:44 ]
Tytuł:  Re: Pytanie o wskazniki?

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ą.

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