On Tuesday 26 August 2003 10:39, Serghei Amelian wrote:
> Hmm, de ce conteaza? Din cate stiu eu "return buffer" este sinonim cu
> "return &buffer[0]", asa ca unde e problema? Poti sa-mi dai un exemplu unde
> ar avea importanta chestia asta?
Diferenta este locul unde se aloca memoria. char buffer[512] o sa il ai
alocat pe stiva, sau static (daca e in afara contextului vreunei functii.
Daca ai intr-o functie:
const char *func(void)
{
char buffer[1023];
return buffer;
}
Asta e un dezastru waiting to happen. (dar stiai asta, nu?)
Cand trimiti ca parametru la o functie care primeste un char * ca parametru
atunci se face cast-ul automat, daca primeste un char[] ca parametru se
copiaza pe stiva (cred).
Daca functia in schimb returneaza un char[] atunci la retur se va face
copierea intregului string (1023 de caractere).
At least, that's the way I see it.
Dorin.
---
Detalii despre listele noastre de mail: http://www.lug.ro/