[ROZWIĄZANE] Przekazanie tablicy do funkcj...
Najlepsza odpowiedź
R3X
20.07.2014 11:36
To działa tak jak przekazanie parametru przez wskaźnik w cpp. Funkcja addSomeNoise nie otrzyma kopii tekstu "Hello John", ale dokładnie ten sam adres pamięci w którym przechowywany jest ten tekst w funkcji plugin_init(). Obie funkcje operują więc na dokładnie tym samym stringu.
public plugin_init() { new szMyAwesomeText[256]; formatex(szMyAwesomeText, charsmax(szMyAwesomeText), "Hello %s", "John"); log_amx("%s", szMyAwesomeText); //Hello John addSomeNoise(szMyAwesomeText, charsmax(szMyAwesomeText)); log_amx("%s", szMyAwesomeText); //Hello John!!! } addSomeNoise( szText[], size ) { add(szText, size, "!!!"); }
Nie zawsze jest to pożądane, dlatego można zabezpieczyć przekazane tablice przed zapisem przez użycie słowa kluczowego const
public plugin_init() { new szMyAwesomeText[256]; formatex(szMyAwesomeText, charsmax(szMyAwesomeText), "Hello %s", "John"); log_amx("%s", szMyAwesomeText); //Hello John addSomeNoise(szMyAwesomeText, charsmax(szMyAwesomeText)); log_amx("%s", szMyAwesomeText); //Hello John!!! } addSomeNoise( const szText[], size ) { //Błąd kompilacji add(szText, size, "!!!"); }Przejdź do postu

Rivit
19.07.2014
Witam.
Mam taki kod:
inna funkcja() { new info[256]; formatex(info, charsmax(info), "Runda: %i^nTT %i:%i CT^n", roundnumber + 1, TTwin, CTwin) Zakoncz() //wywołanie TU POTRZEBUJE PRZESLAC } Zakoncz() { new dane[64]; formatex(dane, charsmax(dane), "Koniec w %i rundzie", roundnumber) // add(info, charsmax(info), dane, charsmax(dane))// JAKOS DODAC DO TEJ TABLICY //POTRZEBUJE ABY INFO SIE USTAWILO NA TO CO TU ZROBIE }
Jak to zrobić? Czytałem o referencji itp. ale nie mam doświadczenia jeszcze. Proszę o podpoiwedź
Rivit
20.07.2014
Rivit
20.07.2014
Nie ma w PAWN'ie wskaźników co nie?
GwynBleidD
20.07.2014
Więc gdy na niej sobie pooperujesz to się zmieni w obu funkcjach.
Rivit
20.07.2014
Najlepsza odpowiedź
R3X
20.07.2014
To działa tak jak przekazanie parametru przez wskaźnik w cpp. Funkcja addSomeNoise nie otrzyma kopii tekstu "Hello John", ale dokładnie ten sam adres pamięci w którym przechowywany jest ten tekst w funkcji plugin_init(). Obie funkcje operują więc na dokładnie tym samym stringu.
public plugin_init() { new szMyAwesomeText[256]; formatex(szMyAwesomeText, charsmax(szMyAwesomeText), "Hello %s", "John"); log_amx("%s", szMyAwesomeText); //Hello John addSomeNoise(szMyAwesomeText, charsmax(szMyAwesomeText)); log_amx("%s", szMyAwesomeText); //Hello John!!! } addSomeNoise( szText[], size ) { add(szText, size, "!!!"); }
Nie zawsze jest to pożądane, dlatego można zabezpieczyć przekazane tablice przed zapisem przez użycie słowa kluczowego const
public plugin_init() { new szMyAwesomeText[256]; formatex(szMyAwesomeText, charsmax(szMyAwesomeText), "Hello %s", "John"); log_amx("%s", szMyAwesomeText); //Hello John addSomeNoise(szMyAwesomeText, charsmax(szMyAwesomeText)); log_amx("%s", szMyAwesomeText); //Hello John!!! } addSomeNoise( const szText[], size ) { //Błąd kompilacji add(szText, size, "!!!"); }