Vertauschen Sie zwei Variablen mit Zeigern

Bin ich zu schreiben versucht, eine swap-Funktion mit Zeiger(speziell ein void-Zeiger)-Referenz, aber mein code nicht funktioniert. Hier ist mein code:

void swap(void *p1,void *p2) 
{
    int temp;   
    temp=*((int*)p2);
    p2=p1; 
    p1=&temp;
}

int main() 
{
    int i=4;
    int j=5; 
    cout<<i<<j<<endl;
    swap(&i,&j); 
    cout<<i<<j<<endl;
    return 0;
}

Wohin gehe ich falsch?

Dieser defekt ist in einer Menge weisen, aber das wichtigste Problem (IMO) ist die Zuordnung p1,p2 mit Werten, während Sie tatsächlich benötigen, weisen Sie der Adresse, die Sie ansprechen. Dies ist nicht das einzige Problem, nur das wichtigste IMO.
Sie müssen übergeben Sie den Zeiger per Referenz ?
Da Sie austauschen ints, brauchen Sie nicht zu pass-Parameter für die Funktion als Hohlräume.

InformationsquelleAutor dead programmer | 2012-12-20

Schreibe einen Kommentar