5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)
  • Q:

    Bijdrager
    wilfred

    C, de verschilende typen functies

    He,

    Na wat Php ben ik dan eindelijk een beetje aan het klooien met C. Ik begrijp alleen niet hoe de functies precies werken.

    Ok, je hebt dus verschillende soorten functies, bijv “int function_x(parameters)” of “void function_y(parameters)”. Wat is precies het verschil hiertussen? Verder retourneert een functie al dan niet een result als ik het goed heb begrepen; wat is het doel hiervan? Ten slotte wat betreft de parameters die een functie accepteert. Klopt het dat de functie alleen maar kan werken met de variabelen die als parameters worden meegestuurd?

    Mijn excuses voor de enigszins onduidelijke formulering; ik begrijp zelf ook nog niet goed wat ik niet snap geloof ik :-).

    Alvast bedankt!

    Groeten, Wilfred


    Bijdrager
    Tristan

    Hoi,

    er is maar 1 soort C functie: return_value functie_naam(parameters).
    De return_value kan van elke type zijn en er is een speciale: void == niets.
    Verder kun je naast de parameters ook andere variablen gebruiken in een functie zoals lokale variablen (bestaan alleen binnen de functie) en globale (zijn door het hele programma benaderbaar, over het algemeen wordt dit gezien als een slecht idee). De plaats van definitie van de lokale variablen verschilt tussen de verschillende C dialecten. Traditioneel moest je aan het begin van een functie je vars definieeren, tegenwoordig kan het op elk punt binnen de functie.

    Maaruh hier vragen naar hoe C werkt lijkt me niet zo’n goed idee. Als ik jou was zou ik de C bijbel kopen => Kernighan & Richie’s C handboek.

    Hoop je vraag een beetje beantwoord te hebben…

    Greets
    Tristan


    Bijdrager
    robert

    Tja, over functies valt veel te zeggen. Ik raad je aan er een goed leerboek op na te slaan. Een bekend standaarwerk is het boek van Kernighan & Ritchie (The C Programming Language). Wel prijzig. (Ik zag ‘m onlangs nog als pdf op alt.binaries.e-book-technical staan ….)

    In jouw voorbeeld definieer je function_x als een functie die een integer teruggeeft als resultaat (d.m.v. ‘ return’); function_y geeft niets terug (void).

    Over de scope van variabelen valt zo mogelijk nog meer te zeggen dan over functies, maar om je vraag te beantwoorden: nee, klopt niet. Binnen een functie kun je ook eigen ‘locale’ variabelen (automatic variables) definieren en gebruiken. Maar een functie kan ook externe (globale of static) variabelen gebruiken.

    Nog even dit: bij de aanroep van een functie met parameters, geef je ‘de waarde’ van de variabelen als parameters aan de functie mee (‘call by value’). Dus niet de variable zelf.

    Sorry als mijn antwoord wat hakkelig overkomt, maar zoals gezegd: een goed leerboek is echt een aanrader.


    robert


    Bijdrager
    Pn
    ”robert”

    Nog even dit: bij de aanroep van een functie met parameters, geef je ‘de waarde’ van de variabelen als parameters aan de functie mee (‘call by value’). Dus niet de variable zelf.

    He Robert .. wel eens van een pointer gehoord?;-)


    Bijdrager
    Sad
    ”wilfred”

    Verder retourneert een functie al dan niet een result als ik het goed heb begrepen; wat is het doel hiervan?

    Voorbeeld: Als je een functie maakt die 2 getallen optelt, kan je het resultaat retourneren:

    int tel_getallen_op(x, y)
    geeft een integer terug. In je programma kan je dan zeggen:

    resultaat = tel_getallen_op(3, 5);

    het de waarde die door de functie wordt geretourneerd komt dan in “resultaat” te staan.

5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.