Citat:
zastita je napisao:
Code:
char *primer (char *parametar) {
parametar="aaaaaa";
return "nesto"; // nije bitno u ovom slucaju
}
int main () {
char *promenljiva1, *promenljiva2;
promenljiva1="bbbbb";
promenljiva2 = primer (promenljiva1);
}
Ako sam ja dobro razumeo tebi promenljiva1 posle funkcije primer() pokazuje na "aaaaaaa" ?
Ako je to onda je to GRESKA u kompajleru koji koristis.Zasto ?
POINTER se predaje funkciji da bi se neko mesto u memoriji menjalo,ali mi ne mozemo da promenimo adresu na koju ce pointer da pokazuje.U ovom slucaju se bas to radi.
Na adresi 0x12345678 se nalazi "bbbbbbb" i mi predajemo funkciji adresu da bi eventualno mogli da menjamo ili pristupimo sadrzaju te memorije.Ako se uradi :
pointer = "aaaaaaaaa" pointeru se daje nova vrednost (adresa 0x11223344) i samim tim se menja pointer. To je isto kao da imate int i promenite ga u funkciji ali se on ne menja van te funkcije.
Ispravno bi bilo koriscenje strcpy() koju uzima dve memorijske adrese i kopira sa druge na prvu do pojave "\0" znaka.
Nadam se da smo ovim resili sve probleme?
Tako da Peca-o menjaj taj kompiler koji koristis ;o)