Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[C/C++] Rekenen met pointers

Pagina: 1
Acties:

  • Maks
  • Registratie: September 2005
  • Laatst online: 15-11 21:29
Ben al een tijdje bezig met een wat groter programma maar één elementeer deel wil gewoon niet werken. Probleem is heel klein en simpel maar ik zal er toch maar even een stukje er bij vertellen:

Ik ben dus bezig met een programma dat een (eendimensionale) array binnen krijgt en een waarde x die aangeeft op welke locatie hij precies de waarde kan vinden waar hij enkele berekeingen mee moet uitvoeren. Nu lukt eigenlijk alles behalve het "rekenen" met de pointer. Om het probleem te isoleren heb ik de simpelste implimentatie van het probleem geschreven:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;

void main( void )
{
    int Larray[ 25 ] = {1,2,3,4,5,6,7, };
    int *p = Larray;
    int x = 5;

    p + x;

    cout << *p;


    cin.get();
}


Zoals te zien is verhoog ik de pointer dus met 5 en dus zou -althans, zo was mijn verwachting -ik eigenlijk op 6 uit moeten komen. Maar dit gebeurt niet en ik krijg alleen een 1 te zien.

Mijn compiler (Visual Studio 2k5) geeft wel een warning: "warning C4552: '+' : operator has no effect; expected operator with side-effect". Maar ik snap niet wat ik fout doe (ook met Google kon ik het niet vinden).

Dus wat doe ik nou precies fout? Want ik snap het echt niet meer, ook in een boek ("Aan de slag met C++") staat het zo uitgelegd, die hebben het dus ook fout :'(

  • Sandern
  • Registratie: Juli 2006
  • Laatst online: 15-11 08:54
p += x;

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
p = p + x;
of
p += x;

edit: Spritze elf :X

[ Voor 33% gewijzigd door RobIII op 30-09-2008 16:49 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Kixtart
  • Registratie: Mei 2004
  • Niet online

Kixtart

Destruction = Improvement

code:
1
p = p+x;

code:
1
p += x;


Je wilt iets optellen, maar je geeft niet aan waar het resultaat moet komen te staan. En ik snap niet precies wat je nu wilt doen. Je wilt p[0] met x ophogen of het adres zodat je op plaats p[5] uitkomt? *p geeft de waarde in hokje 0 (zolang je het adres niet aangepast hebt) en p het adres van het array.

edit:
Laat... Volgende keer typ ik wel wat minder :+
edit2:
Hmm, als ik zo kijk is het mogelijk dat ik een foutje maak bij m'n uitleg van de pointers. Het is weer even geleden ;)

[ Voor 36% gewijzigd door Kixtart op 30-09-2008 16:55 ]

☻/
/▌
/ \


  • Maks
  • Registratie: September 2005
  • Laatst online: 15-11 21:29
God, 8)7 . Nouja dat komt misschien omdat ik de hele dag al bezig ben. Dan ga je zelfs simpele dingen fout doen, daarnaast is C ook niet echt een taal die ik al goed onder de knie heb.

Heel erg bedankt, ik zou uit schaamte de TS willen wissen maar ik laat het maar staan mochten er nog meer domkoppen zijn :+

Edit\\ Hehe, ook de spuit elfs bedankt :)

[ Voor 4% gewijzigd door Maks op 30-09-2008 16:52 ]


  • writser
  • Registratie: Mei 2000
  • Laatst online: 13-11 10:55
Wat een flauwe fout. Typisch iets waar je overheen kijkt. Ik lees dat je met Visual Studio werkt, ik zou dan eens wat experimenten met de Debugger. Plaats met F9 wat breakpoints om de code die het niet lijkt te doen, en inspecteer dan tijdens runtime wat er allemaal niet goed gaat. Is enorm handig als je tegen wat complexere problemen aanloopt.

[ Voor 7% gewijzigd door writser op 30-09-2008 20:17 ]

Onvoorstelbaar!

Pagina: 1