26. maj 2003 - 16:24Der er
23 kommentarer og 1 løsning
Hjælp til pointere
Jeg forstår ikke hvad jeg gør galt i følgende kode hvor jeg vil bytte om på 2 pointere, så de kommer til at pege på det den anden pegede på før og omvendt
#include <stdio.h>
void swap(int *pp,int *pa); int main() { int *a,*p,v,f;
ja oki...nu virker det...tak skal du have....Hvad sker der så helt præcist i det program nu hvor du bruger ** istedet for *
Jeg er i gang med at lære pointere...og vil gerne kunne det sådan helt til bunds nemlig....Ville være taknemmelig hvis du lige gad forklare programmet...
Jeg er skod til at forklare det, men jeg prøver lige :)
en parameter først, der kun sendes over som enkelt pointer. void func( int* w ) { }
void main { int e = 3; // ligger på addresse 0x100 int *pE = &e; // pE's addresse er 0x200, pE's værdi er nu 0x100 og *pE er 3 func( pE );
ville i func, *w være 3 og w's værdi være 0x100.
hvis du så skriver w = 0x200, ville pE ikke bliver 0x300 da w er en lokal værdi, der i kladet får samme værdi som pE. For at pE ændrer sig, skal du sende en pointer med til den:
dobbelt pointer: void func( int** w ) { }
void main {
int e = 3; // ligger på addresse 0x100 int *pE = &e; // pE's addresse er 0x200, pE's værdi er nu 0x100 og *pE er 3 func( &pE );
ville w's værdi være addressen på pE (0x200) og *w være værdien af pE og **w værdien af det pE peger på (3). Når du så skirver *w = 0x400, ændrer du faktisk i pE's værdi, dvs det sted den peger hen på.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.