[C++] Declaraties Lezen

Forum van 1ste Bachelor Informatica.

Moderator: Praesidium

User avatar
Madsen
WOZ
Posts: 474

[C++] Declaraties Lezen

Post#1 » Sun Jun 14, 2009 1:26 pm

Aloah,

Is een vraagske. Het was belangrijk voor c++ da we declaraties konnen opstellen/lezen. Maar in den cursus zelf staan der ni echt veel dus we hebben op msn me een paar mense een paar opgaves zelf uitgevonden (en ons ni al te hard geconcentreerd op wa wel/niet mag van terugkeer waardes)

Bij volgende opgave bijvoorbeeld (die we zelf verzonne) :

een pointer naar een array van functies met argument een const pointer naar een const int en terugkeerwaarde een pointer naar een functie met terugkeerwaarde een int en argument een const pointer naar int


(dees zou nooit compile mja tis gewoon voor te zien of we het zoude kunne)

waren er 3 die dit uitkwamen (exact):

-> int (*((*a)[](*const const int)))(*const int)

en 2 die dit uitkwamen (of zoiets in den aard) :

-> int (*const int) (*p)[(*const const int)]

Bij het eerste is er dus gewerkt volgens den tekst en bij het 2de is er volledig achterwaards gewerkt..

Het eerste was naar aanleiding van iets in de cursus :
int (*f(int))(int) : "" f is een functie met een int en als terugkeerwaarde een pointer naar een functie met een int en als terugkeerwaarde een int ""

Welke van de 2 is juist? (ik persoonlijk had het eerste)

En als der geeneen juist is.. jah we're screwed dan xD

Edit : De dinges da we maakte ware rap rap verzonne en de opgaves zullen ni echt kunnen werken/compile maar het was gewoon voor de werkwijze door te emme, dus gelieve ier niet te komen zegge da het ni ga werken.. want da is het punt niet !
Ontwetende Minderjarige 1990-2008
WINAK Schachtenkoning 2008-2009
WINAK V.U. 2009-2010
WINAK Hagar 2010-2011
WINAK Schachtentemmer 2011-2012
WINAK WOZ 2012 - ...

Respect My Authoritah !

User avatar
nasam
Posts: 233
Contact:

Post#2 » Sun Jun 14, 2009 2:09 pm

ik kom zelf dit uit;

int (*fp)(const int *) *(fp(const int* const)[]


geen idee of het klopt EDIT: het klopt zker wete ni

dees klopt zeker ni:
int (*const int) (*p)[(*const const int)]

want tussen [] bij declaratie met ofwel een constante staan, ofwel niets.

Een array van functies is trouwens volgens mij onmogelijk, een array van pointers naar functies wel en zou dus dit worden (volgens mij)

int (*fp)(const int *) *((*fp)(const int* const)[] -> klopt dus ni
http://www.nathansamson.be" onclick="window.open(this.href);return false; Flattr me!Image

User avatar
Joachimvdh
Prosenior
Posts: 1092

Post#3 » Sun Jun 14, 2009 2:15 pm

Simon had aan mij dit gegeven:
een array van pointers naar functies met argument int en terugkeerwaarde een pointer naar een functie met als argument een double en terugkeerwaarde een ref karakter

Daar hebbek van gemaakt: (en compiled)
char & (*(*fp[10])(int))(double);

die 2 die ge post kloppen ni echt denk ik :p
trouwens: een array van functies gaat niet. Dat moeten functie pointers zijn.

daar zou ik van maken (een array op zich is een pointer dus dat heb ik zo gelaten). ook moeten die identifiers erbij, anders kunde uw pointer ni const maken.
int (*(*fp[10])(const int* const a))(int* const b);

edit nee die identifiers moeten helemaal ni.
int (*(*fp[10])(const int* const))(int* const);
Last edited by Joachimvdh on Sun Jun 14, 2009 2:16 pm, edited 1 time in total.

User avatar
mowlawner
Posts: 16

Post#4 » Sun Jun 14, 2009 2:16 pm

tussen [] kan er idd niets komen, voor de rest ben ik ook even de kluts kwijt ivm die declaraties.. hopelijk vind ik de kluts wel weer voor morgen :roll: ik heb de vraag al aan Ruben gesteld maar nog geen antwoord gekregen..

wie heeft nu gelijk btw, joachim of nathan?

User avatar
nasam
Posts: 233
Contact:

Post#5 » Sun Jun 14, 2009 2:19 pm

ik in ieder geval ni, da van de joachim ziet er redelijk uit (en compiled)


EDIT: ik denk trouwens ni da iemand verwacht da we zoiets ingewikkelds gaan kunnen.
Last edited by nasam on Sun Jun 14, 2009 2:28 pm, edited 1 time in total.
http://www.nathansamson.be" onclick="window.open(this.href);return false; Flattr me!Image

User avatar
Madsen
WOZ
Posts: 474

Post#6 » Sun Jun 14, 2009 2:20 pm

mhmmm ok, ik em dus dezelfde gedachten als den joachim voor het doen, mr ik snap dus ni echt hoeda sommige mense het dan deden voor van achter naar voor te lezen, maar wel van voor nr achter op te stellen..

So is joachim's way of thinking correct :P?

Edit : die van da joachim had gemaakt van de simon had de simon ook tegen mij gezegd en ik kwam hetzefde uit.
Ontwetende Minderjarige 1990-2008
WINAK Schachtenkoning 2008-2009
WINAK V.U. 2009-2010
WINAK Hagar 2010-2011
WINAK Schachtentemmer 2011-2012
WINAK WOZ 2012 - ...

Respect My Authoritah !

User avatar
racekakje
WOZ
Posts: 740

Re: [C++] Declaraties Lezen

Post#7 » Sun Jun 14, 2009 3:16 pm

Madsen wrote: Edit : De dinges da we maakte ware rap rap verzonne en de opgaves zullen ni echt kunnen werken/compile maar het was gewoon voor de werkwijze door te emme, dus gelieve ier niet te komen zegge da het ni ga werken.. want da is het punt niet !
Als je een correcte declaratie opstelt dan compileert da altijd e.
Dus als uw declaratie ni compileert is ze sowieso fout!

Ik zeg natuurlijk niet dat ge het ga gebruiken in een programma..

In 1 declaratie mag maar 1 naam van een variabele voorkomen, dus zowel fp als a kan niet!


Ik heb zelf dit:
((int *() (const*)int)()(const*)const int)) (*a)[]

User avatar
Madsen
WOZ
Posts: 474

Post#8 » Sun Jun 14, 2009 3:52 pm

Mhmm nu konnek elemaal nimeer volge en emmek dus is gaan zien op google nr complexe declaraties :

http://www.codeproject.com/KB/cpp/compl ... tions.aspx

(vooral meer naar benede daar)

Aan de werkwijze te zien die daar gehanteerd wordt, lijkt de joachim gelijk te hebbe !
Ontwetende Minderjarige 1990-2008
WINAK Schachtenkoning 2008-2009
WINAK V.U. 2009-2010
WINAK Hagar 2010-2011
WINAK Schachtentemmer 2011-2012
WINAK WOZ 2012 - ...

Respect My Authoritah !

User avatar
Joachimvdh
Prosenior
Posts: 1092

Post#9 » Sun Jun 14, 2009 3:53 pm

Da compiled ni...
ik heb het trouwens ondertussen ook zonder die a opgelost en da compiled volledig ;)

User avatar
mowlawner
Posts: 16

Post#10 » Sun Jun 14, 2009 4:05 pm

nasam wrote:ik in ieder geval ni, da van de joachim ziet er redelijk uit (en compiled)


EDIT: ik denk trouwens ni da iemand verwacht da we zoiets ingewikkelds gaan kunnen.
Ruben zei over voorbeeld 4 op p 63, soortgelijke en moeilijker op het examen

vb 4 : int (*p(int))(int);

User avatar
Tom
Posts: 602

Post#11 » Sun Jun 14, 2009 4:12 pm

Heb het zelf geleerd op C++ Reference - Data Types - Reading Type Declarations:

1. Begin bij de variabele.
2. Interpreteer naar rechts tot de eerste ) zonder (
3. Interpreteer naar links tot de eerste ( en ga naar stap 2.

Voor diegene die nog eens een iets andere willen oefenen:
void ** (*d) (int &, char **(*)(char *, char **)); (Antwoord)

User avatar
nasam
Posts: 233
Contact:

Post#12 » Sun Jun 14, 2009 4:23 pm

mowlawner wrote:Ruben zei over voorbeeld 4 op p 63, soortgelijke en moeilijker op het examen

vb 4 : int (*p(int))(int);
Wel moeilijker dan in de les, maar ne array van functies die functies gaan beginne teruggeve is toch wel lichtjes derover... (en dertusse nog wan const * gekapt)
http://www.nathansamson.be" onclick="window.open(this.href);return false; Flattr me!Image

User avatar
mowlawner
Posts: 16

Post#13 » Sun Jun 14, 2009 4:30 pm

je hoeft het niet te leren voor mij, maar ik kan je enkel maar zeggen wat Ruben mij vertelt heeft he:)

edit: @Tom: wat is het nut van pointer to pointer to void?

User avatar
Joachimvdh
Prosenior
Posts: 1092

Post#14 » Sun Jun 14, 2009 4:36 pm

void pointers, daar kunde alles aan toekenne. Ge moet het erna wel terug casten. (afaik)
en het nu van ne pointer to pointer... tjah, bij bomen had ik ineens door waarom het toch nuttig kan zijn :)

User avatar
nasam
Posts: 233
Contact:

Post#15 » Sun Jun 14, 2009 4:39 pm

mowlawner wrote:je hoeft het niet te leren voor mij, maar ik kan je enkel maar zeggen wat Ruben mij vertelt heeft he:)

edit: @Tom: wat is het nut van pointer to pointer to void?
let wel, ** kan nuttig zijn maar probeer het zoveel mogelijk te vermijden. Als je ergens een *** tegenkomt en je kunt er niet onderuit in je huidige design smijt dan al je code weg en begin opnieuw (Vrije vertaling van iets wat ik ooit eens gelezen heb)

Het nut van jullie eerste oefening valt trouwens ook sterkt te betwijfelen...

Edit: ik ben het trouwens wel aant leren, maar om nu jullie oefening helemaal zelf te kunnen...
http://www.nathansamson.be" onclick="window.open(this.href);return false; Flattr me!Image

Return to “1ste Bachelor”

Who is online

Users browsing this forum: No registered users and 59 guests