Funktionsproblem



  • Hi und sorry, dass ich shcon wieder störe, aber ich hab noch ma ne frage und zwar:
    Warum wird bei standartfunktionen wie z.b. der Funktion zum quadrieren von zahlen
    double pow( double, double ); benutzt??? bzw warum ist die anzahl der argumente (wär shcön wenn mir jemand dafür ne genaue deninition geben könnte)bei der funktion main unwichtig??? mfg noob



  • Hallo

    Warum wird bei standartfunktionen wie z.b. der Funktion zum quadrieren von zahlen
    double pow( double, double ); benutzt???

    😕 Irgendwie fehlt in dem Satz etwas...

    warum ist die anzahl der argumente (wär shcön wenn mir jemand dafür ne genaue deninition geben könnte)bei der funktion main unwichtig???

    Die Anzahl ist niemals unwichtig. Es gibt eben nur zwei verschiedene gleichgültige Definitionen der hauptfunktion main. Eine ganz ohne und eine mit den zwei Parametern.

    bius bald
    akari



  • "Es gibt eben nur zwei verschiedene gleichgültige Definitionen der hauptfunktion main. Eine ganz ohne und eine mit den zwei Parametern. "

    sry das raff ich irgendwie net



  • Hallo

    Es gibt diese zwei gültigen Definitionen für die main Funktion
    - int main(int argc, char* argv[])
    - int main()

    Genau eine davon must du auswählen.

    bis bald
    akari



  • ja nur was ist der unterschie zwischne diesen zwei definitionen???
    int main() bedeutet doch eiegntlich das die funktion keine agumente hat oder ..also könnte man auch eiegtnlcih schrieben int main(void)???



  • Hallo

    ja nur was ist der unterschie zwischne diesen zwei definitionen???

    Die Parameter! je nachdem ob du dem Programm übergebene Kommandoparamter auswerten willst oder nicht.

    int main() bedeutet doch eiegntlich das die funktion keine agumente hat oder

    Korrekt

    also könnte man auch eiegtnlcih schrieben int main(void)???

    Nein das kann (darf) man nicht, denn ...(void) ist laut C++ Standard nicht erlaubt. Das void ist wegzulassen.

    bis bald
    akari



  • was sind eiegntlich argumente????



  • noob123 schrieb:

    was sind eiegntlich argumente????

    void              exit            (int iStatus);
    /\                /\               /\  /\
    Return-Wert-Typ   Funktionsname    Typ Argument
    

  • Mod

    akari schrieb:

    also könnte man auch eiegtnlcih schrieben int main(void)???

    Nein das kann (darf) man nicht, denn ...(void) ist laut C++ Standard nicht erlaubt. Das void ist wegzulassen.

    wo steht das? in 3.6.1 [basic.start.main] nicht. ansonsten ist 8.3.5/2 2.satz relevant, der besagt, dass die parameterliste (void) äquivalent zu einer leeren parameterliste ist (das heisst, der resultierende funktionstyp ist der selbe, und darauf kommt es an). (void) mag ein anachronismus sein, aber falsch ist es sicherlich nicht.



  • akari schrieb:

    also könnte man auch eiegtnlcih schrieben int main(void)???

    Nein das kann (darf) man nicht, denn ...(void) ist laut C++ Standard nicht erlaubt. Das void ist wegzulassen.

    Chapter und Verse, please. Das letzte mal als ich in den C++ Standard geschaut habe waren (void) und () noch äquivalent (im Gegensatz zu C) und ersteres führt einfach nur schneller zu einem Carpal-Tunnel-Syndrom.



  • noob123 schrieb:

    was sind eiegntlich argumente????

    Das was an eine Funktion übergeben wird. Das ist das was in den Klammern nach dem funktionsnamen steht. Aber am besten liest du mal ein gescheites Buch, kann ja net schaden 😉

    zB

    int main(int argc, char *argv[]);
    

    Sinds zwei Argumente/Parameter. Das erste ist vom Typ "int" und hat den Namen argc (d.h. wenn du irgendwo argc im folgenden Code schreibst, dann wird der Wert den diese Variable hat an der Stelle eingefügt). Der zweite is vom Typ "char *[]", d.h. heißt ein Pointer auf eine Liste von Pointern mit Pointer auf char-Arrays (ich hoffe das war jetzt richtig) ROFL 😃 Aber ich glaub des is a bisl zu verwirrend für den Anfang.

    edit: Ich will auch mal meinen, dass () und (void) das gleiche ist. Bei C agbs ja nur (void) und C++ is ja schließlich abwärtskompatibel.



  • CodeFinder schrieb:

    noob123 schrieb:

    was sind eiegntlich argumente????

    void              exit            (int iStatus);
    /\                /\               /\  /\
    Return-Wert-Typ   Funktionsname    Typ Argument
    

    Das was du hier mit Argument benannt hast, bezeichnet man in der Regel als Parameter. Argument ist das was man beim Aufruf an die Funktion übergibt. Andere sprechen auch von formalen Parametern = die Dinger in der Deklaration und aktuelle Parameter = die Werte die man beim Aufruf übergibt.



  • HumeSikkins schrieb:

    Das was du hier mit Argument benannt hast, bezeichnet man in der Regel als Parameter. Argument ist das was man beim Aufruf an die Funktion übergibt. Andere sprechen auch von formalen Parametern = die Dinger in der Deklaration und aktuelle Parameter = die Werte die man beim Aufruf übergibt.

    Jop, hast Recht...

    exit(0);
    

    Hierbei ist 0, das der Funktion 'exit' übergebene Argument. In einem Prototyp (wie ich zuvor gepostet hab) wäre das dann der Parameter. Sorry wg. der Verwirrung 🤡


Anmelden zum Antworten