Avatar billede lifehacker Nybegynder
27. august 2008 - 20:42 Der er 6 kommentarer

Pointere definitioner

Hej

Jeg er kommet totalt i tvivl eftersom der er 2 forskellige definitioner for *-operatoren.
Hvornår snakker man om indirection og dereference? 
Jeg har forstået at dereference skrives på følgende måde:

int myAge=49;

int* pAge = &myAge;  //dereferance operator * og adressof-operator &

Hvor pAge vil så indeholde værdien til variablet myAge.
1. Hvordan læser man dette? Siger man at "pAge pointeren indeholder addressen til addressen af myAge som indeholder værdien 49? 

2. Hvornår snakker man om indirection??
Altså denne pointer

int* pAge;

for indirection pointer? eller hvordan?
Avatar billede arne_v Ekspert
27. august 2008 - 20:53 #1
indirection = dereference

int myAge=49;
int* pAge; // pointer
pAge = &myAge; // addressof operator
f1(pAge); // kald med pointer
f2(*pAge); // kald med det som pointer peger paa

det sidste er dereference !
Avatar billede arne_v Ekspert
27. august 2008 - 20:59 #2
derefence og addressof er modsatte operatorer
Avatar billede lifehacker Nybegynder
27. august 2008 - 21:25 #3
tak for svar!

ok, dvs dereference er til værdier og addressoff er til adresser, og så skrotter vi indirection.

int myAge= 49;
int *pAge = &myAge;
...og dette stykke kode vil udskrive værdien 49, men hvad kaldes den? En pointer som peger på en addresse med værdien 49? Eller?
Avatar billede arne_v Ekspert
27. august 2008 - 21:31 #4
int myAge= 49;
int *pAge = &myAge;
printf("%d\n", myAge); // udskriver 49
printf("%p\n", pAge); // udskriver addressen paa myAge
printf("%d\n", *pAge); // udskriver 49
Avatar billede arne_v Ekspert
30. august 2008 - 01:52 #5
OK ?
Avatar billede arne_v Ekspert
28. oktober 2008 - 03:12 #6
?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester