Pointers

Tags:    c++

Er ret forvirret over pointers (surprise surprise!) og har brug for jeres hjælp.

Jeg har svært ved at se hvorfor man anvender "address of" &-operatoren. Jeg har lavet nogle eksempler, og jeg tror eksempel 1 er det samme som eksempel 2, jeg er dog i tvivl om disse 2 er de samme som eksempel 3??



EKS 1.)
Fold kodeboks ind/udKode 


EKS 2.)

Fold kodeboks ind/udKode 



EKS 3.)

Fold kodeboks ind/udKode 


Hvad er meningen med &-operatoren når man har * til at indikere en adresse i hukommelsen??

Hjælp påskønnes som altid! :-)







Hej Henning,

uden at hvae checket med min compiler...

Eksempel 1 og 2 gør det samme, Ja. pAlder sættes til at pege på det som ligger i hvorGammel.
pAlder = &hvorGammel
*pAlder = 50

Eksempel 3 ser ud til at sætte pAlder til at pege på "hvad end" der ligger på addressen 50.
pAlder = 50
*pAlder = ??

For at tydeliggøre hvad du ønsker og hvad du gør, når du arbejder med pointere, anbefales det kraftigt at du ikke tildeler pointeren en værdi samtidig med at du opretter den.

Fold kodeboks ind/udCSharp kode 


Eksempel 3 er initieringen, hvor pointeren bliver sat til at pege på en addresse...
int *pAlder = hvorGammel;
Derfor er det ukendt hvad indholdet af *pAlder er bagefter, idet at dette vil hente pointerens indhold.


http://www.geocities.com/varunhostel/TechnicalArticles/PointerArticle/PointerArticle_Part1.html?reload_coolmenus

Med venlig hilsen
Ieet




Ok, jeg tror jeg har fat i det nu, ud fra linket som du har postet.
Forskellen på dereference operatoren * og address-of & operatoren er følgende:

&-operatoren henter variablens adresse i hexadecimal format.
*-operatoren henter variablens værdi

Kan man så sige af følgende kode at pAlder peger på hvorGammel's adresse i hexadecimal? Og har intet med værdien at gøre?

Fold kodeboks ind/udKode 


I din kode forstår jeg ikke rigtig linie 4:
*pAlder = 10; // hvorGammel = 10
hvorfor 10? Er det bare noget du har sat den til?
Kan man sige at den rummer adressen til en variabel med værdien 10? eller er dette forkert?



#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
int age, *pAge;

age = 10;

cout << age << endl;

pAge = &age; // Pointeren skal pege mod age's adresse

*pAge += 1; // pAge -> adressen af age -> age += 1

cout << age << endl;

system("PAUSE");
return 0;
}



Indlæg senest redigeret d. 20.08.2008 15:24 af Bruger #13861
t