2015-04-15 14 views

Odpowiedz

10

Musisz usunąć zaznaczenie wskaźnika, aby zastąpić wartość, na którą wskazuje wskaźnik.

Patrz:

#include <stdio.h> 

void func(int *p){ 
     int x = 3; 
     *p = x; 
} 

int main(){ 
    int y = 0; 
    func(&y); 
    printf("\n Value = %d",y); 
    return 0; 
} 

celu usunięcia awarii wyjście dodać return 0; oświadczenie do głównej funkcji.

Zobacz uruchomiony przykład: http://ideone.com/rO8Gua

4

Chcesz, aby ustawić wartość na p do x? To

*p = x; 

Co rzeczywiście masz, p = &x oznacza zmianę lokalną kopię wskaźnika zwrócić do zmiennej lokalnej zamiast.

7
void func(int *p){ 
    *p = 3; 
} 

Byłaś ustawienie p na adres zmiennej lokalnej x. Po pierwsze, ustawienie wartości p nie zmienia wartości y (funkcja otrzymuje tylko kopię adresu y, a nawet jeśli to zmienisz, nie zmienisz y).

Po drugie, x jest zmienną lokalną, więc nie można jej używać po zakończeniu funkcji func.

Po trzecie, w ten sposób nie można zmienić adresu y, ponieważ jest to zmienna lokalna. Będziesz musiał zadeklarować go jako wskaźnik.

6

Można odwoływać się do zawartości pamięci określoną przez p używając * s. Tak więc, p =&x; zmieni p nie treść pamięci, o której mówi p. Powinieneś był użyć, *p = x

Powiązane problemy