Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: pointers in c  (gelezen 2914 keer)

Offline xellos

  • Lid
pointers in c
« Gepost op: 2009/10/19, 20:20:48 »
ik ben bezig om pointers te leren in c.
nu heb ik een aantal vragen.

waarom heb je ze nou precies nodig ?
waneer ?

en ik heb dit progie waar mee ik met printf een pointer locatie wil weergeven

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int anum = 0;
    printf("Please enter a number: ");
    scanf("%d", &anum);
    printf("The number you entered is: %d", anum);
    printf("And the memory location of the place where the number is stored is: %*", *anum);
    getchar();
    return 0;
}


maar dat lukt niet echt nu denk ik dat het ligt aan dat je inplaats van bijf %d iets anders moet gebruiken maar wat?
 

Offline idefix

  • Lid
Re: pointers in c
« Reactie #1 Gepost op: 2009/10/20, 08:05:11 »
Misschien ben je hier iets mee? Post #21 gaat over pointers.

ipv %d kun je %u gebruiken.
Support bacteria. They're the only culture some people have.

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: pointers in c
« Reactie #2 Gepost op: 2009/10/21, 04:02:38 »
Gebruik %p en (void*)(&anum)

edit: &anum ipv *anum
« Laatst bewerkt op: 2009/10/21, 16:03:09 door profoX »
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Mossie

  • Lid
Re: pointers in c
« Reactie #3 Gepost op: 2009/10/21, 09:00:20 »
In plaats van *anum moet je &anum gebruiken.

Offline Joshua822

  • Lid
Re: pointers in c
« Reactie #4 Gepost op: 2009/10/21, 18:32:02 »
Citaat
waarom heb je ze nou precies nodig ?
waneer ?

Het nuttige van pointers is als je gaat gebruik maken van dynamisch geheugen.

Verder heb ik aantal dingen te melden over je programma:

1) Je voegt de header stdlib.h toe aan je programma, maar je gebruikt geen enkele functie die in deze header zit.
2) Kijk naar de volgende regel:
printf("And the memory location of the place where the number is stored is: %*", *anum);Ten eerste, het gaat hier om een integer variabel, niet om een pointer naar integer variabel. Sterker nog: in heel je programma maak je nog niet eens gebruik van een pointer variabel. Want als anum een pointer zou zijn, zou de declaratie int * anum geweest zijn. int * betekent een pointer naar een integer, je kunt int ook veranderen door bijvoorbeeld float, dan wordt het een pointer naar een float. Om aan te geven dat het een variabel is van type integer aan scanf() of printf() gebruiken we het %d symbool.
Ten tweede, met de operator '*' zeggen we letterlijk : "de waarde die op het geheugenadres van anum is opgeslagen", en niet "het geheugenadres van anum". Voor het tweede gebruik je de '&' operator.

Dus, deze lijn verander je naar:
printf ( " And the memory location of the place where the number is stored is: %d", &anum );
Dan zou het moeten werken. Ik hoop dat ik het duidelijk uitgelegd heb ;)

Re: pointers in c
« Reactie #5 Gepost op: 2009/10/22, 17:05:52 »
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline xellos

  • Lid
Re: pointers in c
« Reactie #6 Gepost op: 2009/10/22, 19:07:59 »
maar hoe print je nou in plaats van de waarde van anum
een pointer naar de memory location?

Offline Joshua822

  • Lid
Re: pointers in c
« Reactie #7 Gepost op: 2009/10/22, 20:13:30 »
Citaat
maar hoe print je nou in plaats van de waarde van anum
een pointer naar de memory location?
Dat heb ik uitgelegd:
Citaat
Verder heb ik aantal dingen te melden over je programma:

1) Je voegt de header stdlib.h toe aan je programma, maar je gebruikt geen enkele functie die in deze header zit.
2) Kijk naar de volgende regel:
printf("And the memory location of the place where the number is stored is: %*", *anum);
Ten eerste, het gaat hier om een integer variabel, niet om een pointer naar integer variabel. Sterker nog: in heel je programma maak je nog niet eens gebruik van een pointer variabel. Want als anum een pointer zou zijn, zou de declaratie int * anum geweest zijn. int * betekent een pointer naar een integer, je kunt int ook veranderen door bijvoorbeeld float, dan wordt het een pointer naar een float. Om aan te geven dat het een variabel is van type integer aan scanf() of printf() gebruiken we het %d symbool.
Ten tweede, met de operator '*' zeggen we letterlijk : "de waarde die op het geheugenadres van anum is opgeslagen", en niet "het geheugenadres van anum". Voor het tweede gebruik je de '&' operator.

Dus, deze lijn verander je naar:
printf ( " And the memory location of the place where the number is stored is: %d", &anum );Dan zou het moeten werken. Ik hoop dat ik het duidelijk uitgelegd heb Wink

Hier, dit zal werken:
#include <stdio.h>

int main ()
{
   int anum;
   printf ( "Please enter a number: " ); scanf ( "%d", &anum );
   printf ( "The number you entered is: %d \n", &anum );
   printf ( "And the memory location where the number is stored is: %d \n", &anum );
   return 0;
}

Offline xellos

  • Lid
Re: pointers in c
« Reactie #8 Gepost op: 2009/10/22, 21:26:15 »
ik heb het al met %p