Pekare är en av de mest kraftfulla - och svåraste - funktioner i C programmeringsspråk. Vid arbete med pekare , är det ofta nödvändigt att omvandla mellan olika typer av pekare. Ibland är det möjligt att konvertera direkt från en typ till en annan , men ofta , särskilt i komplexa program , kan du finna det nödvändigt att lagra en pekare som har konverterats från en typ , men har ännu inte omvandlats till en annan typ av pekare . I så fall måste du använda en ogiltig pekare , vilket representerar en pekare med någon typ alls . Saker du behöver
C-kompilator
C program
Visa fler instruktioner
1
Förklara din void pekare . För att göra en global eller lokal variabel eller ett fält i en struktur , skriv " void * p; " på en tom rad i den tillhörande funktion eller struktur , eller utanför alla funktioner och strukturer för att göra det globalt . För att lägga till ett argument void pekare till en funktion , skriv " void * p " i funktionens argument lista . I båda fallen kan du byta ut bokstaven " p " med någon rörlig valfritt namn .
2
Store ett värde i ditt tomrum pekarvariabel . Om du gjorde en lokal eller global variabel , bara skriva " p = ( void * ) x ; " . Ersätt " x " med namnet på den maskinskrivna pekaren du vill konvertera till en ogiltig pekare . Om du gjorde en struktur fält , skriv " sp = ( void * ) x ; " . Ersätt " s " med namnet på den struktur och " x " med namnet på pekaren . Om du gjorde en funktion argument , anropa funktionen så här : " f ( ( void * ) x ) " . Ersätt " f " med namnet på funktionen och " x " med namnet på pekaren . Addera 3
att läsa värdet av void pekare och omvandla den tillbaka till en maskinskriven pekare , skriv " x = ( Type * ) p; " , där " x " är den maskinskrivna pekaren , " p " är ogiltig pekare och " Type " är den ursprungliga typen av pekaren du lagrat i " p " . Var noga med att få den typen korrekt , eftersom C-kompilator kommer plikttroget omvandla pekaren till den typ du ber om , oavsett om du har rätt eller inte . Detta kan leda till subtila buggar som är svåra att åtgärda .