Na heel veel prutsen ben ik achter het probleem van mijn code gekomen. Het probleem heeft te maken met het gelijkmaken van twee pointers. Je kan doen:
• a = b (a verwijst naar b) of
• *a = *b (a neemt de waarde van b aan)
Als je dit gebruikt in wat simpele code dan ziet het er zo uit:
Kan iemand mij vertellen waarom a=b zich niet hetzelfde gedraagd als *a=*b in deze code
Omdat ik bijna zeker weet dat dit al eens eerder is langskomen hier, ben ik hard wezen zoeken. Helaas heb ik niets soortgelijks kunnen vinden.
• a = b (a verwijst naar b) of
• *a = *b (a neemt de waarde van b aan)
Als je dit gebruikt in wat simpele code dan ziet het er zo uit:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #include <iostream> #include <stdlib.h> void makeEqual(int* a, int* b); int main() { int* a = new int; int* b = new int; *b = 5; makeEqual(a,b); std::cout << *a; return 0; } void makeEqual(int* a, int* b) { a = b; //alleen binnen de functie zal a gelijk blijven aan b, daarna is het weer een lege pointer *a = *b; //overal zal a gelijk worden aan b, waarom nu wel en net niet? } |
Kan iemand mij vertellen waarom a=b zich niet hetzelfde gedraagd als *a=*b in deze code
Omdat ik bijna zeker weet dat dit al eens eerder is langskomen hier, ben ik hard wezen zoeken. Helaas heb ik niets soortgelijks kunnen vinden.