blackcom Skrevet 31. oktober 2003 Del Skrevet 31. oktober 2003 Hey! int var =1, *pkr = &var; integer variablen var er 1, *pkr peker på var og &var peker på minneomerådet til var eller noe sånt. Noen som kunne forklart meg litt mer forskjellen på: var, *pkr, &var og når de forskjellige faktisk trengs/må brukes? Hva er liksom "bruksomerådet" til de? Fremdeles litt forvirra, jeg. if(erJegForvirra()){ leggInnEmne(); stikkAaKjoepEnIs("snickersIs"); }//if Lenke til kommentar
kattemat Skrevet 31. oktober 2003 Del Skrevet 31. oktober 2003 La oss se.... Forbehold om at dette er skrevet litt for tidlig på morgenen:!: int i = 1; refererer du nå til i så refererer du til verdien 1(dvs. "innholdet" av i). Refererer du til &i så er det addressen til i i minnet du refererer til. Leser en de 32( eller 16) neste bitsene fra lokasjonen &i i minnet så har en "innholdet" av i. int *i; er en deklerasjon av en peker. Dvs i "inneholder" kun en minneadresse. i peker til et sted i minnet hvor det skal være allokert 32(eller 16) bits minne som kan tolkes som en int. For at en ikke skal få den lite hyggelige "segmentation fault" er det viktig å passe på at pekere alltid perer til allokert minne når en aksesserer dem. Husk at deklarasjonen 'int *i;' _ikke_ setter av plass i minne til selve dataen!! En kan enten allokere minne selv i = malloc(sizeof(int)); da må en også huske å frigjøre dette minnet når en ikke lengre har bruk for det(ikke lengre skal ha noen referanser til det) - ellers ender du opp med en minnelekasje. Frigjøring gjøres ved free(3). Ellers kan en sette en peker til å peke til allerede allokert minne: int tall; int *i = &tall; Nå peker altså i til lokasjonen i minnet som er satt av til "tall". En bruker ofte pekere som funksjonsparametre. Dette er både for at funksjonene skal være mere robuste(reentrant og threadsafe) og for at minnehåndteringen skal bli "bedre". Dvs. en kaller må selv allokere minne som en funksjon skal legge "svaret" i. Men nå gidder jeg ikke skrive mere Håper du ble litt klokere av dette.... Lenke til kommentar
blackcom Skrevet 31. oktober 2003 Forfatter Del Skrevet 31. oktober 2003 Jo, dette hjalp faktisk! takker og bukker!! mvh Marius Strand Lenke til kommentar
Tosh Skrevet 31. oktober 2003 Del Skrevet 31. oktober 2003 Hm, dette var en av de bedre peker-forklaringene jeg har lest.. Jeg surrer alltid verre med peker, og prøver meg frem med * og & til ting slutter å segfaulte.. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå