🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
7 messages
7 total messages Started by dominova Sat, 07 Dec 2002 13:03
pointer probleempke
#6551
Author: dominova
Date: Sat, 07 Dec 2002 13:03
29 lines
1698 bytes
hallo allemaal,
ik heb het een beetje moeilijk met pointers in c en c++
Onderstaande code zou een pointer- via een functie wijzig_pointer- naar de
globale variabele getal1 moeten laten wijzigen
wie helpt me aub
dank bij voorbaat




int wijzig_pointer (int *pointer);

 int getal1 = 5;
void main()
{
  int getal2 = 10, *pointer;
  pointer = &getal2;

 wijzig_pointer(pointer);

 cout << "de waarde van pointer is: " << *pointer << endl;

}
int wijzig_pointer(int *pointer)
 {
  pointer=&getal1;
  //return *pointer;

 }
Re: pointer probleempke
#6553
Author: Smudge
Date: Sat, 07 Dec 2002 14:27
39 lines
1919 bytes
dominova wrote:
> hallo allemaal,
> ik heb het een beetje moeilijk met pointers in c en c++
> Onderstaande code zou een pointer- via een functie wijzig_pointer-
> naar de globale variabele getal1 moeten laten wijzigen
> wie helpt me aub
> dank bij voorbaat
>
>
>
>
> int wijzig_pointer (int *pointer);
>
>  int getal1 = 5;
> void main()
> {
>   int getal2 = 10, *pointer;
>   pointer = &getal2;
>
>  wijzig_pointer(pointer);

Dit moet iets worden in de zin van wijzig_pointer(&pointer);. Op die manier
kan je call by reference toepassen op pointer zelf zodat, wanneer je de
waarde van pointer in wijzig_pointer() verandert, de adreswijziging
zichtbaar blijft na je functie-oproep. Je functie wijzig_pointer() zal je
ook nog moeten aanpassen.

>  cout << "de waarde van pointer is: " << *pointer << endl;
>
> }
> int wijzig_pointer(int *pointer)
>  {
>   pointer=&getal1;
>   //return *pointer;
>
>  }

Mvg,
Smudge
Re: pointer probleempke
#6554
Author: JeroenV
Date: Sat, 07 Dec 2002 14:49
59 lines
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/>
Re: pointer probleempke
#6555
Author: Nicolas Barbier
Date: Sat, 07 Dec 2002 17:21
43 lines
2343 bytes
dominova wrote:

> hallo allemaal,
> ik heb het een beetje moeilijk met pointers in c en c++
> Onderstaande code zou een pointer- via een functie wijzig_pointer- naar de
> globale variabele getal1 moeten laten wijzigen

Je probeer een argument te veranderen, maar aangezien C/C++ met 
call-by-value werkt verander je eigenlijk een kopie.

Werkt wel:

void wijzig_pointer(int **pointer) // Pointer is nu een pointer naar een
                                   // pointer naar een int
{
  *pointer=&getal1; // Verander de pointer waarnaar pointer verwijst zodat
                    // hij het adres van getal1 bevat.
}

Aanroepen als:

int getal1;
int getal2;
int *blaat = &getal2; // blaat wijst naar getal2
wijzig_pointer(&blaat); // Hierna wijst blaat naar getal1

Je kan ook een reference gebruiken (werkt alleen in C++):

void wijzig_pointer(int *&pointer)
{
  pointer=&getal;
}

Aanroepen als:

wijzig_pointer(blaat);

Maar persoonlijk vind ik deze manier verwarrend, aangezien je nu het 
functievoorschrift moet kennen om te kunnen besluiten of blaat nu al dan 
niet kan veranderd worden door de functie.

-- 
Nicolas Barbier
Re: pointer probleempke
#6556
Author: Martin
Date: Sat, 07 Dec 2002 18:10
67 lines
3135 bytes
JeroenV schreef ons:
> 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.

Voor de rest complimenten voor je site
http://users.pandora.be/jvaes/

--
Vriendelijke groeten,
Martin Reedijk.
___________________________________________
AudioCD <> MP3 <> WMA <> MIDI <> WAV <> etc.
Check muziek>converteren @
www.WinampNederlands.nl
Re: pointer probleempke
#6560
Author: JeroenV
Date: Sun, 08 Dec 2002 13:46
12 lines
1554 bytes
Martin wrote at za, 07 dec 2002 18:10:13 GMT:

> Voor de rest complimenten voor je site
> http://users.pandora.be/jvaes/

*g* bedankt :-)

Dat staat daar enkel om de directory-structuur te verbergen hoor...

-- 
Mvg, JeroenV
Xnews instellen en gebruiken: <url:http://users.pandora.be/jvaes/xnews/>
Re: pointer probleempke
#6561
Author: Martin
Date: Sun, 08 Dec 2002 13:54
17 lines
1692 bytes
JeroenV schreef ons:
> Martin wrote at za, 07 dec 2002 18:10:13 GMT:
>
>> Voor de rest complimenten voor je site
>> http://users.pandora.be/jvaes/
>
> *g* bedankt :-)
>
> Dat staat daar enkel om de directory-structuur te verbergen hoor...

Hoewel ik het sarcastisch bedoelde had ik dat wel door hoor ;)

geintje :->


--
[--�_�--] Groeten, Martin [--�_�--]
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads