[C/C++] Pointers voorbeelden

Pagina: 1
Acties:

  • cobratbq
  • Registratie: Maart 2001
  • Laatst online: 17-12-2015
Zelf ben ik al een tijdje aan het programmeren in C en begin net in C++. Ik zit nog steeds met een raadsel: wanneer kun je pointers nu echt nuttig gebruiken?
(Ik heb de search al gebruikt)
Ik heb zelf boeken en het wordt allemaal netjes uitgelegd enzo, ik begrijp ook wat pointers zijn, maar ik heb nog steeds geen flauw idee hoe ik een pointer op z'n nuttigst kan gebruiken.

Ik gebruik ze zelf eigenlijk bij 2 gevallen:
1. File-pointer: bij File I/O
2. Function Argument Pointers( in het begin van een functie om een waarde door te geven. (want in C zijn er nog geen reference pointers ofzoiets)

Maar zouden jullie anders nog eens wat mooie voorbeelden kunnen geven van het gebruik van pointers op een nuttige manier?

Tnx :)

One ring to rule them all, one ring to find them, one ring to bring them all, and in darkness bind them...


Verwijderd

Tip: zoek op
code:
1
C pointers

in de GoT search.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Vooral waneer je dynamisch gealloceerde datastructuren gebruikt zijn pointers erg handig. Ik heb zelf echt leren werken met pointers (en dus ook de voordelen ervan ingezien) toen ik in pascal allemaal boom en lijst structuren moest implementeren.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • cobratbq
  • Registratie: Maart 2001
  • Laatst online: 17-12-2015
Op dinsdag 05 maart 2002 20:59 schreef Janoz het volgende:
Vooral waneer je dynamisch gealloceerde datastructuren gebruikt zijn pointers erg handig. Ik heb zelf echt leren werken met pointers (en dus ook de voordelen ervan ingezien) toen ik in pascal allemaal boom en lijst structuren moest implementeren.
Klinkt wel interessant, moet ik eens gaan onderzoeken, tnx :)

One ring to rule them all, one ring to find them, one ring to bring them all, and in darkness bind them...


Verwijderd

Op dinsdag 05 maart 2002 20:55 schreef cobratbq het volgende:
Zelf ben ik al een tijdje aan het programmeren in C en begin net in C++. Ik zit nog steeds met een raadsel: wanneer kun je pointers nu echt nuttig gebruiken?
(Ik heb de search al gebruikt)
Bij grote structs of structs die als object dienen.
code:
1
2
3
4
5
6
int main()
{
  struct blaat dit;
  doeietsmetstruct(&dit);
  [..]
}

Je wilt de data in struct houden, het is een object. Dus gebruik je een pointer. Dit wordt vooral handig als je met reusachtige object structs werkt zoals in glib.

Ook het overgeven van buffers (unsigned char *D kan je beter met pointers doen tenzij je steeds de buffer wilt herschrijven :+

Verwijderd

Waar je wilt refereren naar niet primitieve datatypen, zoals een geinstantieerd object van een door jouw geschreven class, zou ik pointers gebruiken. Dus wanneer je objecten doorgeeft aan functies of als return value geeft bij functies zou ik gebruik maken van pointers.

Je kunt pointers overigens goed vergelijken met referenties in Java. Ik weet niet of dit jou iets zegt, maar ik vind het een handige manier van denken :).

  • cobratbq
  • Registratie: Maart 2001
  • Laatst online: 17-12-2015
Op woensdag 06 maart 2002 00:58 schreef HammerHD het volgende:
Je kunt pointers overigens goed vergelijken met referenties in Java. Ik weet niet of dit jou iets zegt, maar ik vind het een handige manier van denken :).
:? Sorry, het woord pointer klinkt me beter in de oren :?

One ring to rule them all, one ring to find them, one ring to bring them all, and in darkness bind them...


  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 09-08 22:22
Ik gebruik pointers vooral bij dynamisch gealloceerde classes en structs. Hmm ... bedenk me ineens dat ik overal waar ik met classes werk, wel de pointer gebruik ipv de class zelf :P.

Tevens gebruik ik pointers altijd bij strings. Die standaard string class blaat gebruik ik nooit. Doe het altijd met een char*. Zoek maar es uit hoe strings werken in C dan kom je vanzelf bij pointers ;)

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


Verwijderd

Op woensdag 06 maart 2002 08:52 schreef cobratbq het volgende:

[..]

:? Sorry, het woord pointer klinkt me beter in de oren :?
In C++ maak je toch ook wel gebruik van referenties :+

Deze zijn overigens niet gelijk aan de referenties in Java!

edit:

Sorry, beetje off topic ;)
Het ging over pointers niet over referenties.

Verwijderd

Op woensdag 06 maart 2002 11:02 schreef drZymo het volgende:
Ik gebruik pointers vooral bij dynamisch gealloceerde classes en structs.
Volgens mij bedoel je hier objecten. Je maakt objecten in C++ dynamisch aan en niet een class. Je maakt een instantie van je class, je instantieerd dus een object dynamisch.

Verwijderd

http://home.netcom.com/~tjensen/ptr/cpoint.htm
Hier vind je een goede simpele tutorial over pointers in c(++)

Verwijderd

Functiepointers zijn ook erg handig.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 11-09 18:38
Op dinsdag 05 maart 2002 20:55 schreef cobratbq het volgende:
Zelf ben ik al een tijdje aan het programmeren in C en begin net in C++. Ik zit nog steeds met een raadsel: wanneer kun je pointers nu echt nuttig gebruiken?
De standaard case is sorteren. Dan moet je twee objecten verwisselen. Je hebt niets aan een kopie; je moet weten waar het ene object staat en dat overscrijven met het andere object.

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: 12-09 23:01
Je kunt niet onder functiepointers uit als je bijvoorbeeld callbacks wilt maken.

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.


Verwijderd

Op woensdag 06 maart 2002 15:19 schreef farlane het volgende:
Je kunt niet onder functiepointers uit als je bijvoorbeeld callbacks wilt maken.
Tuurlijk wel, met function objects.

  • drZymo
  • Registratie: Augustus 2000
  • Laatst online: 09-08 22:22
Op woensdag 06 maart 2002 11:49 schreef HammerHD het volgende:

[..]

Volgens mij bedoel je hier objecten. Je maakt objecten in C++ dynamisch aan en niet een class. Je maakt een instantie van je class, je instantieerd dus een object dynamisch.
You're right. Had ik vanmorgen gepost, had nog niet genoeg koffie op :+

"There are three stages in scientific discovery: first, people deny that it is true; then they deny that it is important; finally they credit the wrong person."


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 12-09 23:01
Op woensdag 06 maart 2002 15:22 schreef Sneechy het volgende:
Tuurlijk wel, met function objects.
Voor het C gedeelte anyway....

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.


  • Marc
  • Registratie: November 2001
  • Laatst online: 01-12-2021
ik gebruik pointers ook als ik veel text moet onthouden die ik vaak moet oproepen. bv je bent een spel aan het maken en je hebt vijanden die je aan wilt kunnen roepen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
enum ems {
een = 1,
twee = 2,
drie = 3,
vier = 4,
vijf = 5,
zes = 6,
};

int enemys[6] = {
een,
twee,
drie,
vier,
vijf,
zes
};

char *enemy_names[6] = {
"Vijand een",
"Vijand twee",
"Vijand drie",
"Vijand vier",
"Vijand vijf",
"Vijand zes",
};

nu wil je bv een random vijand oproepen.
code:
1
2
3
4
int i;

i = rand() % 7;
printf("je komt nu deze vijand tegen: %s\n", enemys_names[i]);

het is maar een stom voorbeeld maar je weet hopelijk een beetje wat ik bedoel :)


ps. deze code zal wel vol fouten zitten maar ik zit op school dus kank de code niet testen.
Pagina: 1