Toon posts:

[C++] pointers en arrays

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste tweakers,

ik ben een tijdje geleden begonnen met visual basic .net en dat heb ik nu redelijk onder de knie. Maar ik weet dat dit een soort van beginners taal is en daarom ben ik nu verder gegaan met C++ (het grote werk). Dus snel aan de slag gegaan met een paar tuturials alleen een paar dingen zijn me onduidelijk omdat de code die ik heb geschreven aan hand van de tuturial mij logies leek. Wat klopt hier niet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int main()
{
    int getal[21];
    int *pt1;
    pt1 = &getal[0];
    getal[0] = 1;
    
    int i;
    for (i = 0; i < 21; i++)
    {
        *(pt1 + i) = *pt1 + *pt1;
    }
}


het idee is niet voor een echt programma maar meer voor mijzelf om pointers samen met arrays te begrijpen. Het zou in mijn ogen nu de array moeten vullen met getal[0]=2; getal[1]=4; getal[2]=6 (maar vanaf getal 2 blijft alles 4!)

Hebben jullie het andwoord op mijn amateuristische maar voor mij vervelende (ik haat het als iets niet lukt) vraag?

alvast bedankt!

  • dbakker
  • Registratie: September 2002
  • Laatst online: 14-06-2024
Verwijderd schreef op donderdag 06 juli 2006 @ 18:09:
Beste tweakers,

ik ben een tijdje geleden begonnen met visual basic .net en dat heb ik nu redelijk onder de knie. Maar ik weet dat dit een soort van beginners taal is en daarom ben ik nu verder gegaan met C++ (het grote werk). Dus snel aan de slag gegaan met een paar tuturials alleen een paar dingen zijn me onduidelijk omdat de code die ik heb geschreven aan hand van de tuturial mij logies leek. Wat klopt hier niet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int main()
{
    int getal[21];
    int *pt1;
    pt1 = &getal[0];
    getal[0] = 1;
    
    int i;
    for (i = 0; i < 21; i++)
    {
        *(pt1 + i) = *pt1 + *pt1;
    }
}


het idee is niet voor een echt programma maar meer voor mijzelf om pointers samen met arrays te begrijpen. Het zou in mijn ogen nu de array moeten vullen met getal[0]=2; getal[1]=4; getal[2]=6 (maar vanaf getal 2 blijft alles 4!)

Hebben jullie het andwoord op mijn amateuristische maar voor mij vervelende (ik haat het als iets niet lukt) vraag?

alvast bedankt!
Die *pt1 in je formule binnen de for-lus wijst altijd naar het eerste element uit het array. De eerste keer staat daar nog 1 in, maar in de tweede iteratie staat hier het getal 2 in. Vanaf dat moment zal het eerste element ook niet meer veranderen, waardoor de rest automatisch op 4 (2+2) uitkomt.

edit:

iteratie 1: element 0 = element 0 + element 0; // element 0 = 1 + 1
iteratie 2: element 1 = element 0 + element 0; // element 1 = 2 + 2
iteratie 3: element 2 = element 0 + element 0; // element 2 = 2 + 2
...etc

[ Voor 10% gewijzigd door dbakker op 06-07-2006 18:23 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Kom op, zelfs zonder verstand van pointers zou je kunnen zien dat de waarde die je beschrijft niet dezelfde waarde is als die je uitleest :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
haha dom van me! excuseer!

mn ja, ik zie nu wel de fout.. maar ik snap niet hoe ik het moet verbeteren!


sorry dat ik jullie bezig hou met mijn domme vragen :P maar hier zitten nou eenmaal de experts ;)

[ Voor 78% gewijzigd door Verwijderd op 06-07-2006 19:51 ]


  • Milosonator
  • Registratie: Juni 2006
  • Laatst online: 17-10-2025
Kijk eens op http://www.cplusplus.com/ en lees het nog eens na, pointers zijn erg lastig.

Tweakblog, voornamelijk over 3d-printen


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

FTMarcella schreef op donderdag 06 juli 2006 @ 19:31:
Kijk eens op http://www.cplusplus.com/ en lees het nog eens na, pointers zijn erg lastig.
Pointers worden als lastig ervaren, maar eigenlijk valt het best mee. Het enige "lastige" eraan is dat je niet naar geheugen moet schrijven dat niet gealloceerd is, maar dat is gewoon een kwestie van consequent programmeren. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
heel erg bedankt voor de goede link! Pointers snap ik nu veel beter naar aanleiding van die afbeelding, maakt het zoveel duidelijker http://www.cplusplus.com/doc/tutorial/pointers.htmlhttp://www.cplusplus.com/doc/files/11-imgpoin1.gif

alleen ik zou graag alleen nog even snel een voorbeeld van jullie zien hoe één van jullie het zou doen

[ Voor 10% gewijzigd door Verwijderd op 06-07-2006 19:55 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 10-12-2025
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>

int main()
{
    const int size = 21;
    int getal[size];
    int *pt1= getal; // Array-to-pointer conversion
    getal[0] = 1;
    
    for (int i = 1; i != size; ++i) {
        pt[i] = 2*pt[i-1];
    }
}

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Kijk anders eens naar deze grappige maar duidelijke filmpjes: http://cslibrary.stanford.edu/104/ :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
heel erg bedankt, aan jullie heb ik wat :).. haha bij mijn eerste programma staan jullie in de credits hoor ;);)
Pagina: 1