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, "!!!");
}