Jeśli zadeklarowałem wskaźnik p
jako int *p
; w głównym module mogę zmienić adres zawarty w p
, przypisując p=&a;
gdzie a
jest już zadeklarowaną inną zmienną całkowitą. Teraz chcę zmienić adres za pomocą funkcji jako ::Zmiana adresu zawartego przez wskaźnik przy użyciu funkcji
void change_adrs(int*q)
{
int *newad;
q=newad;
}
Jeśli zgłoszę tej funkcji z modułu głównego
int main()
{
int *p;
int a=0;
p=&a; // this changes the address contained by pointer p
printf("\n The address is %u ",p);
change_adrs(p);
printf("\n the address is %u ",p); // but this doesn't change the address
return 0;
}
zawartość adres jest niezmieniona. Co jest złego w korzystaniu z funkcji dla tego samego zadania?
Przez wskaźnik podajesz wskaźnik. Jeśli chcesz zmienić wskaźnik w funkcji, podaj go przez odniesienie ... podwójną wskazówkę. –