wojciechgorzolka napisał(a):
Ale to znaczy,że argumenty przekazywane do funkcji nie są globalne?
Właściwie to niekoniecznie. Nie wiem, czy potrafię to wyjaśnić, ale spróbuję:
1) zmienne do funkcji można przekazać przez wartość. Czyli:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wtedy wewnątrz funkcji tworzona jest kopia zmiennej przekazanej do funkcji (przekazujesz tylko WARTOŚĆ do funkcji)
2) zmienne można też przekazać przez referencję. Zapisując
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
przekazujesz do funkcji ADRES zmiennej. Wszystkie operacje wykonywane wewnątrz funkcji będą miały wpływ na zmienną, która może być lokalna w innej funkcji (ponieważ zmiany zapisujesz w tym samym miejscu w pamięci).
3) tablice zawsze przekazywane są przez referencję. Tak naprawdę przekazując tablicę, przekazujesz ADRES jej pierwszego elementu
4) jest jeszcze taki dziwny sposób, dookoła. Jeżeli utworzysz zmienną jako globalną w pliku programu, to wewnątrz funkcji możesz zmieniać jej wartość, mimo, że nie została przekazana do funkcji jako argument. Ale z tym należy uważać, bo można sobie namieszać w programie.
Pamiętaj też, że istnieje coś takiego jak przesłanianie nazw zmiennych. Jeżeli utworzysz zmienną globalną, a w jakiejś funkcji utworzysz zmienną o takiej samej nazwie (nie pamiętam, czy typ też musi być taki sam!), to wszystkie operacje w tej funkcji wykonujesz na zmiennej lokalnej, zdefiniowanej w funkcji.
Się spisałem
![Puszcza oko ;)](https://forum.atnel.pl/images/smilies/icon_e_wink.gif)
jeśli to pomoże w zrozumieniu przekazywania argumentów, to fajnie. Jeśli coś namieszałem, proszę bardziej doświadczonych kolegów o korektę.