Ik ben bezig met het leren van C++ en ben daarom aan het oefenen met pointers.
Ik heb een gelinkte lijst gemaakt waarvan elk element bestaat uit een naam en een tekenreeks:
Verder heb ik een functie om een element toe te voegen:
Deze functie roep ik aan:
Element bevat ruimte voor 255 tekens. AddElement krijgt alleen een pointer naar het begin de array, namelijk const char *name. Zover snap ik het allemaal nog.
Maar wat ik niet snap is hoe er wordt bepaald hoe lang mijn aangeboden tekenreeks is? AddElement krijgt namelijk, net als strcpy alleen een pointer naar het eerste element. Wordt dit intern bijgehouden of wordt het bepaald door te kijken waar de \0 zit?
Ik heb een gelinkte lijst gemaakt waarvan elk element bestaat uit een naam en een tekenreeks:
C++:
1
2
3
4
5
6
| struct element { int value; char name[255]; element *next; }; |
Verder heb ik een functie om een element toe te voegen:
C++:
1
2
3
4
5
6
7
8
| void AddElement(list *TargetList, int value, const char *name) { element *NewElement = new element; NewElement->value = value; strcpy(NewElement->name, name); // ... nog wat code om de plaats in de lijst te bepalen, niet relevant } |
Deze functie roep ik aan:
C++:
1
| AddElement(IDList, 1, "sir5"); |
Element bevat ruimte voor 255 tekens. AddElement krijgt alleen een pointer naar het begin de array, namelijk const char *name. Zover snap ik het allemaal nog.
Maar wat ik niet snap is hoe er wordt bepaald hoe lang mijn aangeboden tekenreeks is? AddElement krijgt namelijk, net als strcpy alleen een pointer naar het eerste element. Wordt dit intern bijgehouden of wordt het bepaald door te kijken waar de \0 zit?