Article View: be.comp.programming
Article #6554Re: pointer probleempke
From: JeroenV
Date: Sat, 07 Dec 2002 14:49
Date: Sat, 07 Dec 2002 14:49
59 lines
2817 bytes
2817 bytes
dominova wrote at za, 07 dec 2002 13:03:20 GMT:
<knip>
> wijzig_pointer(pointer);
>
<knip>
>
> }
> int wijzig_pointer(int *pointer)
> {
> pointer=&getal1;
> //return *pointer;
>
> }
Hier zit je fout. "pointer" in de functie is een lokale variabele in die
functie, en bijgevolg een andere variabele als "pointer" in de main. Je
kopi๏ฟฝert de waarde van de eerste variabele in de 2de, een call by value. In
dit geval heb je een call by reference nodig, een pointer naar een pointer
dus. Dit is moeilijk uit te leggen, daarom wat code, hopelijk begrijp je me
dan. (BTW, de printf-instructie is eigenlijk C, maar ik weet niet juist hoe
de cout-functie ineen zit. Het zou wel moeten compilen met een C++
compiler.)
void wijzig_pointer (int **); // let op de 2 *
int getal1 = 5;
void main()
{
int getal2 = 10, *pointer1;
pointer1 = &getal2;
wijzig_pointer(&pointer1); // geef het adres van pointer1 mee
// druk de inhoud van pointer1 af
printf("de waarde van pointer is: %d",*pointer1);
}
void wijzig_pointer(int **pointer2)
{
/* de inhoud van pointer2 (die naar pointer 1 verwijst) wordt het adres van
* getal1. Aangezien pointer2 het adres bevat van pointer1, zal pointer1
* gewijzigd worden.
*/
*pointer2=&getal1;
}
Wat ook had gewerkt, is de pointer globaal declareren (boven de main dus).
De functie had dan geen parameters nodig.
Pointers zijn moeilijk, maar vooral de moed niet opgeven. Eenmaal je het
door hebt, verleer je het niet meer.
--
Mvg, JeroenV
Xnews instellen en gebruiken: <url:http://users.pandora.be/jvaes/xnews/>
Technical Details
Message-ID:
<Xns92DDA11897E0Djeroenvpandorabe@195.130.132.65>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-03!sn-xit-06!sn-xit-09!supernews.com!iad-peer.news.verio.net!news.verio.net!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailReferences:
<skmI9.39670$Ti2.6375@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: 107324,783c1464dae403ba
X-Google-Attributes: gid107324,public
X-Google-Thread: fcea4,783c1464dae403ba
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-12-07 06:49:42 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-03!sn-xit-06!sn-xit-09!supernews.com!iad-peer.news.verio.net!news.verio.net!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
Newsgroups: be.comp.programming,nl.comp.programmeren
Subject: Re: pointer probleempke
From: JeroenV <jeroenv@pebbels.be.remove>
References: <skmI9.39670$Ti2.6375@afrodite.telenet-ops.be>
Organization: Fuckit Inc.
Message-ID: <Xns92DDA11897E0Djeroenvpandorabe@195.130.132.65>
User-Agent: Xnews/5.04.25
X-Face: #Es3HcENsp.-3wa!HM)a\e~J'Y1N?>-EnuezgPkutT\313BV%o#2J?v]}6WHS.n-(r|C^x&pd'[MR#P}rIXef]:r}$-6Q8Va35l>~U(dId:c{XO%5~<.@:l$R/\T7utt#'1-{Q\p15G
Lines: 59
Date: Sat, 07 Dec 2002 14:49:40 GMT
NNTP-Posting-Host: 213.224.36.29
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1039272580 213.224.36.29 (Sat, 07 Dec 2002 15:49:40 MET)
NNTP-Posting-Date: Sat, 07 Dec 2002 15:49:40 MET