Otóż problem jest taki:
Dajmy na to, że istnieje struktura:
typedef struct klasa
{
int wartosc;
} moja;
oraz obiekt struktury, który jest wskaźnikiem do jej obiektu:
moja * wsk = NULL
Znajduję się o w funkcji main()
.
Gdzieś w programie natomiast mam funkcje zmien()
. Jej ciało wygląda tak:
void zmien(moja *wsk_f)
{
moja *tmp;
tmp = (moja *)malloc(sizeof(moja));
tmp->wartosc = 2;
wsk_f = tmp;
}
Teraz wywołuje już main
a:
int main()
{
moja * wsk = NULL
zmien(wsk);
if(wsk)
printf("%d", wsk->wartosc);
}
Intencją moją jest by wysłać do funkcji wskaźnik wsk
, stworzyć nowy obiekt, do którego będę się mógł odwołać w main
a. Jednakże linijka:
wsk_f = tmp;
nie działa, gdyż, jak się domyślam, wsk
i wsk_f
, to dwa różne obiekty i wsk
dalej wskazuje na NULL
a. Sytuacja taka jakbym miał funkcje fun(int n)
i wywołał ją fun(k)
. Tak naprawdę nie zmieniam k
, a jej kopie. Jak więc wysłać wskaźnik wsk
do funkcji zmien
, by móc na nim manipulować (a nie na jego "kopii"), czyli zmienić adres na który wskazuję? Mógłbym zwrócić ten wskaźnik jako argument zwracany przez funkcję, ale nie zadowala mnie to. Jest to zagadnienie związane z listami. Mam nadzieje, że problem jest zrozumiały.
Dziękuję.
`dodanie znaczników i ```
- @furious programming