Przepraszam, że odkopuję temat wskaźników. Od kilku dni mam z tym wielki problem. To co tutaj napisaliście jest bardzo pouczające i cieszę się, że taki temat już się pojawił. Sama idea wskaźników jest mi znana i wydawała się prosta doputy, dopuki nie zacząłem analizować czyiś kodów.
Wiadomo, że wskaźnik to nic innego jak zmienna przechowująca adres pamięci do jakieś zmiennej. Natomiast taki zapis:
Cytuj:
void funkcja (char *wskaznik)
oznacza, że informujemy kompilator, że do funkcji przekazujemy argumenty w postaci adresu, prawda? W takim razie, wywołując wyżej wymienioną funkcje, stosujemy taki zapis:
Cytuj:
funkcja(@zmienna_a); //operator pobierania adresu @
//albo
funkcja(tablica); //tablica bez nawiasów zwraca asdres pierwszego elementu
(Wybczcie, że powtarzam wyżej zawarte informacje. Osobie, która to będzie czytać, bedzię łatwiej znależć miejsce, w którym zaczynam się gubić)
Równie dobrze można przekazać zmienną do tej funkcji, ale trzeba zadbać, aby ta zmienna była dwu bajtowa, prawda?
Cytuj:
int zmienna;
funkcja(zmienna);
Teraz, analizując czyjeś kody, znalazłem taki zapis:
Cytuj:
float* tab_wsk_liczb [ 10 ] ;
WYDAJE mi się, że jest to definicja tablicy 10-ciu wskaźników . Jeżeli to prawda, to jak to wykorzystać? Jeżeli tablica przechowuje adresy do różnych zmiennych, to nie można zrobić po prostu tak?:
Cytuj:
int tablica_adres [10];
tablica_adres[2] = @jakas_zmienna;
zmienna_b = *tablica[2];
Czy taki zapis jest prawidłowy?
Nie jestem wstanie zliczyć ile razy przeczytałem rozdział dotyczący wskaźników (przypuszczam, że mógłbym go wyrecytować, nawet jakby ktoś mnie obudził w środku nocy
). Zacząłem się gubić, jak zobaczyłem połączenie struktur ze wskaźnikami, ale po kolei. Proszę szanownych kolegów wskazanie mi gdzie popełniam błąd w rozumowaniu.