[c++] vraag over structs

Pagina: 1
Acties:

  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 05-05 07:58
Situatie 1:
code:
1
2
3
4
5
6
7
8
9
struct str1
{
member1;
member2;
};

str1 blaat;

functie1(&blaat);


Situatie2:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct str1
{
member1;
member2;
};

struct str2
{
str1 *blaat;
str1 *blaat2;
};

str2* blaataap;

functie2(&blaataap->blaat);

In situatie 1 geef ik het geheugenadres van blaat door aan functie1.
In situatie 2 wil ik dat ook doen, maar dat werkt niet.
Wat doe ik fout?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 18:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom geef je het adres van de pointer die wijst naar een str1 mee? blaataap->blaat is toch al een pointer?

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.


  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 05-05 07:58
Ik wil het geheugen adres waar blaat staat als unsigned long aan de functie meegeven.

dus in de eerste is het eigenlijk:
reinterpret_cast<unsigned long>(&blaat)
en in het tweede geval
reinterpret_cast<unsigned long>(&blaataap->blaat)

begrijp ik je nu goed dat ik de & gewoon weg kan laten om hetzelfde te bereiken?

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 22:39

BoAC

Memento mori

FireAge schreef op vrijdag 22 juli 2005 @ 14:06:
Ik wil het geheugen adres waar blaat staat als unsigned long aan de functie meegeven.

dus in de eerste is het eigenlijk:
reinterpret_cast<unsigned long>(&blaat)
en in het tweede geval
reinterpret_cast<unsigned long>(&blaataap->blaat)

begrijp ik je nu goed dat ik de & gewoon weg kan laten om hetzelfde te bereiken?
Yep want blaat is al een pointer naar een str1 struct (die je natuurlijk hebt gealloceerd ;) )

  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 05-05 07:58
argh, ja nu zie ik het 8)7

bij de eerste gebruik ik
str1 blaat
en bij de tweede
str1* blaat

Jullie hebben helemaal gelijk.
nogmaals 8)7
en bedankt _/-\o_

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
FireAge schreef op vrijdag 22 juli 2005 @ 14:06:
Ik wil het geheugen adres waar blaat staat als unsigned long aan de functie meegeven.
Zou ik niet doen, al helemaal niet als je nog niet zo goed weet hoe pointers werken.

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


  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 05-05 07:58
Zit niks anders op.
Ik moet een .md3 (soort dll) file van nikon aansturen en die wil bij zijn functie aanroepen geen pointer hebben, maar het geheugen adres waar hij moet schrijven.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

FireAge schreef op vrijdag 22 juli 2005 @ 16:10:
Zit niks anders op.
Ik moet een .md3 (soort dll) file van nikon aansturen en die wil bij zijn functie aanroepen geen pointer hebben, maar het geheugen adres waar hij moet schrijven.
Wat denk je dan dat een pointer is? :? Een pointer is een verwijzing naar een geheugenadres.

[ Voor 8% gewijzigd door NMe op 22-07-2005 16:14 ]

'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.


  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 05-05 07:58
Ja dat snap ik.
Maar de nikon functie wil een unsigned long hebben, dus dan kan ik er wel een pointer heensturen, maar dat werkt niet.

Ik doe:
code:
1
2
3
int* pAap = new int;

nikonfunctie(reinterpret_cast<unsigned long>(pAap))

en nikon doet dan waarschijnlijk zoiets:
code:
1
2
3
4
5
6
bool nikonfunctie(unsigned long ulAap)
{
int* pAap = reinterpret_cast<int*>(ulAap)
*pAap = 10;
return true;
}

of zoiets.
In ieder geval is na de aanroep van de nikonfunctie, *pAap niet meer gelijk aan daarvoor.
niet mijn keus!

EDIT: spelling

[ Voor 8% gewijzigd door FireAge op 22-07-2005 16:50 ]


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...


  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 05-05 07:58
Jaja, het is me al duidelijk.
Excuses voor de noob vraag.
Ik heb op zich een jaar lang c++ geprogrammeerd, maar dat is alweer 4 jaar geleden, dus het is ff inkomen.
Nog meer mensen die het even in willen wrijven?
Komaar, komaar komaar komaar :)

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

FireAge schreef op vrijdag 22 juli 2005 @ 21:45:
Jaja, het is me al duidelijk.
Excuses voor de noob vraag.
Ik heb op zich een jaar lang c++ geprogrammeerd, maar dat is alweer 4 jaar geleden, dus het is ff inkomen.
Nog meer mensen die het even in willen wrijven?
Komaar, komaar komaar komaar :)
Nouja, je moet het niet zien als in wrijven; je kan beter een goede basis kennis opzetten, dan dat je nu je vraag beantwoord krijgt zonder precies te weten hoe het werkt...dan moet je het volgende keer weer vragen. Dat werd bij ons al als kritiek op natuurkunde studenten gegeven: "ze zetten net zo lang sterretjes neer, totdat het werkt"... dat is geen manier van werken natuurlijk. En iha worden pointers als een van de lastigste onderwerpen ervaren; op templates na.

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
Zoijar schreef op vrijdag 22 juli 2005 @ 22:06:
[...]

Nouja, je moet het niet zien als in wrijven; je kan beter een goede basis kennis opzetten, dan dat je nu je vraag beantwoord krijgt zonder precies te weten hoe het werkt...dan moet je het volgende keer weer vragen. Dat werd bij ons al als kritiek op natuurkunde studenten gegeven: "ze zetten net zo lang sterretjes neer, totdat het werkt"... dat is geen manier van werken natuurlijk. En iha worden pointers als een van de lastigste onderwerpen ervaren; op templates na.
Grappig filmpje waarin pointers uitgelegd worden :)

Ben er ook via GoT een keer opgekomen B)

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 05-05 07:58
Zoijar schreef op vrijdag 22 juli 2005 @ 22:06:
[...]

Nouja, je moet het niet zien als in wrijven; je kan beter een goede basis kennis opzetten, dan dat je nu je vraag beantwoord krijgt zonder precies te weten hoe het werkt...dan moet je het volgende keer weer vragen. Dat werd bij ons al als kritiek op natuurkunde studenten gegeven: "ze zetten net zo lang sterretjes neer, totdat het werkt"... dat is geen manier van werken natuurlijk. En iha worden pointers als een van de lastigste onderwerpen ervaren; op templates na.
Tsja, ik ben ook natuurkunde student. Toeval?
Kan me inderdaad herinneren dat ik regelmatig * & en () voor, achter onder en boven functies en variabelen zette totdat het werkte, puur uit verveling.
Dat vind ik ook het grote nadeel van C++, ik wil helemaal niet nadenken over dat soort geoudehoer.
Romeo Delta software omgeving a.u.b.! Maar soms moet je wel.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Toeval.
* MSalters is natuurkundig ir en heeft niet zo gek veel moeite met ***& of templates.

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


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:23
FireAge schreef op zaterdag 23 juli 2005 @ 17:17:
Dat vind ik ook het grote nadeel van C++, ik wil helemaal niet nadenken over dat soort geoudehoer.
Andere talen proberen dit te verhullen, maar hebben hetzelfde probleem. In bijvoorbeeld C# heb je ook een ref en out keyword die eigenlijk op hetzelfde neerkomen.

Overigens, ik mag mezelf ook natuurkundige noemen en pointers zijn voor mij ook wel duidelijk. Ik vond het eigenlijk wel leuk om uit te zoeken hoe het nu precies in elkaar zit. Templates is minder mijn ding :)
***&
ALs je dat tegenkomt wordt het tijd om opnieuw over je structuur na te denken :)

[ Voor 32% gewijzigd door farlane op 25-07-2005 09:39 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 05-05 07:58
Kijk aan, een hoop mede fysici.
Ik zit ook maar wat te dollen :)

Ik weet nog precies dat bij mijn mondeling voor C++ de docent slechts 1 vraag stelde over references en zodra ik die beantwoord had we de rest van de tijd besteed hebben met praten over koe-tjes (sp?) en kalfjes. Tis alleen alweer tijdje terug en ik had bla->blabla en bla.blabla doormekaar gehaald.

Werk tegenwoordig voornamelijk in labview. Programmeerd heel fijn, maar je wordt er wel lui van :)

Nog groningers onder de fysici die de frank brokken cursus gedaan hebben?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 05-05 09:00

curry684

left part of the evil twins

Professionele website nodig?


  • wjv
  • Registratie: December 2003
  • Laatst online: 04-05 17:14

wjv

Nog groningers onder de fysici die de frank brokken cursus gedaan hebben?
Daar is c++ ook voor mij begonnen. Zijn c++ cursuboek staat ook nog steeds online:

http://www.icce.rug.nl/documents/cplusplus/

Waar ik trouwens nog steeds naar grijp als ik met een c++ vraag zit.
Pagina: 1