Skocz do zawartości

Funkcja zwracająca


Muzzik
# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

Witam.

Otóż jako, że dawno tu nie wtrącałem swoich trzech groszy, a właśnie przez własną pomyłkę wpadłem na sposób (kombinowałem i zapomniałem dopisać na początku 'public' :D) jak zwracać zmienne przez referencje, postanowiłem napisać poradnik.

 

public test(id)
{
        new num=0,slowo[7]
        sprawdz(num,slowo)
        client_print(id,print_chat,"num=%d | slowo:%s",num,slowo)
        return 1
}
sprawdz(&num,slowo[])
{
        num=16
        add (slowo,6,"123456")
        return 0
}

 

Oczywiście Graczowi zostanie wypisane to co w funkcji sprawdz() ustalono.

 

Warunki działania:

1)Deklaracja funkcji nie zawiera przedrostka

 

public

 

sprawdz(&num,slowo[])     // DOBRZE!!!

 

public sprawdz(&num,slowo[])     // ŹLE!!!

 

 

2)Każda zmienna typu integer musi mieć przed nazwą znaczek

 

&

 

sprawdz(&num,slowo[])     // DOBRZE!!!

 

sprawdz(num,slowo[])     // ŹLE!!!

 

 

Chociaż w drugim przypadku sama konstrukcja funkcji jest poprawna, jednak zmienna num zostanie jedynie przyjęta do funkcji jako parametr, ale w przypadku zmiany jej wartości wewnątrz funkcji "sprawdz" nie zostanie ona przekazana do funkcji "test" (jej wartość w funkcji test nie ulegnie zmianie).

 

 

3)Każda zmienna typu string (ciąg znaków char[]) nie może być poprzedzona znakiem

 

&

 

ponieważ kompilator wywali błąd. Mimo braku owego znaczka wartość zostanie zwrócona przez referencję do wnętrza unkcji "test"

 

 

Oczywiście zmienna typu char[] może mieć określoną liczbę znaków, na przykład:

 

sprawdz(&num,slowo[15])     // DOBRZE!!!

 

Nie jestem pewny, ale chyba nie ma narzuconej kolejności, że np. najpierw muszą być parametry zwykłe, a później te, które coś zwracają przez referencję. Gdyby jednak się okazało, że są jakieś błędy przy kompilacji lub po kompilacji w czasie używania coś jest nietak, są jakieś błędy, to prawdopodobnie trzeba umieścić najpierw zmienne niereferencyjne, a później referencyjne, na przykład:

 

 

sprawdz(param1,&num,slowo[])     // DOBRZE!!!

 

ale raczej wydaje mi się, że kolejność jest bez znaczenia.

 

 

Źródło amxx.pl

Zapraszam na mojego twittera:

@Muzzikx

Odnośnik do komentarza

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności