Das Buch für Anfänger zur C Programmierung unter Linux und MS Windows, Einstieg in C Jürgen Wolf C C++ C/C++ Programmieren Linux ANSI C Standard C C99 Einstieg in C Buch Bücher Einstieg in C - C Kurs Programmieren C/C++ Tutorial Lösungen zu den Aufgaben von Kapitel 12
  1. Beim Funktionsaufruf wurde jeweils immer nur ein statt der erforderlichen zwei Argumente verwendet. Und der Rückgabewert der Funktion wurde als void angegeben. Hier währe unsigned int erforderlich gewesen.

    #include <stdio.h>
    
    unsigned int quersumme(unsigned int zahl, unsigned int ziffern)
    {
        int i, sum=0, x;
    
        for(i=0; i<=ziffern; i++)
           {
             /* Letzte Ziffer "abschneiden" */
              x = zahl%10;
              zahl = zahl / 10;
              sum = sum+x;
           }
       return sum;
    }
    
    int main()
    {
       unsigned int summe;
       summe = quersumme(1234, 4);
       printf("Quersumme von 1234 = %d\n",summe);
       summe = quersumme(2468357, 7);
       printf("Quersumme von 2468357 = %d\n",summe);
    
       return 0;
    }
  2. Bei einem Funktionsaufruf mit call by value werden von der Funktion nur die Werte als Kopie übernommen. Genauer, die Werte werden kopiert und liegen in der Funktion als Kopie des Originals zum arbeiten bereit. Somit können Sie sich als Programmierer darauf verlassen, dass innerhalb der Funktion, die Sie aufrufen, die Variable nicht verändert wird. Hat die Variable bspw. einmal einen Wert, den diese nicht haben sollte, kann diese bei der Fehlersuche recht hilfreich sein, da Sie nun nicht sämtliche Funktionen durchsuchen müssen, sondern wissen, dass der Fehler nur im Hauptprogramm liegen kann.

  3. Als Funktionsargument werden die Werte bezeichnet, welche beim Funktionsaufruf an die Funktionsparameter übergeben werden. Die Funktionsparameter sind die in runden Klammern angegebenen Variablen, welchen Sie bei der Funktionsdefinition angegeben haben. Die Funktionsparameter erhalten somit die Werte der Argumente des Funktionsaufrufs.

  4. Bei der Funktionsdefinition befindet sich ein falsches Semikolon und in der Funktion selbst fehlt ein return, womit ein Integerwert an dem Aufrufer zurückgegeben wird. In der Funktion main() wurde Variable ein Bezeichner summe verwendet, womit Konflikte mit der Funktion summe auftreten. Es muss also entweder der Bezeichner der Funktion oder der Variablen geändert werden. Und zu guter Letzt wurde der erste Funktionsaufruf ohne Angabe eines Funktionsname gemacht. Hier ein Lösungsansatz.

    #include <stdio.h>
    
    int summe(int x, int y)
    {
     return x+=y;
    }
    
    int main()
    {
      int sum;
    
      sum = summe(5,9);
    
      sum+=summe(11,12);
    
      printf("Summe = %d\n",sum);
    
      return 0;
    }