Eigener Namensbereich - Variablen



  • Danke für diesen Hinweis.

    Wenn ich den Funktionen Parameter übergebe, müsen doch in dem main Block die entsprechenden Variable schon bekannt sein. (oder schon vor der main)

    Dann wäre die Möglichkeit per return Befehl die abgespeicherten Werte zurück zu liefern.

    Wären die Variablen die vor dem Aufruf der Funktionen, in dem main Block bzw (es dient nur der Frage) davor "bekannt" gibt, nicht global? 😕



  • freddy krüger schrieb:

    Wenn ich den Funktionen Parameter übergebe, müsen doch in dem main Block die entsprechenden Variable schon bekannt sein. (oder schon vor der main)

    Wenn du Parameter übergibst (du tust es nicht!), müssen sie an der aufrufenden Stelle bekannt sein. Sie können eine Zeile vorher definiert worde sein

    freddy krüger schrieb:

    Dann wäre die Möglichkeit per return Befehl die abgespeicherten Werte zurück zu liefern.

    Man kann Parameter so übergeben, dass sie geändert werden können. Man kann Werte aus einer Funktion zurückgeben.

    Keine Ahnung was "die abgespeicherten Werte" sein soll.

    Wären die Variablen die vor dem Aufruf der Funktionen, in dem main Block bzw (es dient nur der Frage) davor "bekannt" gibt, nicht global? 😕

    Nein, warum sollten sie?



  • Wenn ich folgendes Programm (siehe Quellcode unten) ausführe, wird anstelle des Wertes "3" eine "0" angezeigt.

    main.c

    #include <stdio.h>
    #include <stdlib.h>
    #include "FuncA.c"
    #include "FuncB.c"
    
    int main() {
    	int g;
    	FuncA(g);
    	FuncB(g);
    	return 0;
    }
    

    FuncA.c

    int FuncA(int abc) {
    	printf("%i", abc);
    	printf("\n");
    	abc=3;
    	printf("%i", abc);
    	printf("\n");
    	return abc;
    }
    

    FuncB.c

    int FuncB(int def) {
    	printf("%i", def);
    	printf("\n");
    	return def;
    }
    

    Weiß jemand woran es liegt ? 😕



  • Ja, Stichwort Call-by-Value.



  • Nathan schrieb:

    Ja, Stichwort Call-by-Value.

    WIe kann ich dies "lösen" bzw es hinbekommen, dass in der "FuncB" Funktion der Wert "3" angezeigt wird?

    (ohne globale Variablen)

    Irgendwie stehe ich gerade auf dem Schlauch.





  • Call by reference

    void f(int& val)
    


  • manni66 schrieb:

    Call by reference

    void f(int& val)
    

    Gibt es dies auch in C?

    Der Compiler (Orwell DevC++) zeigt mir bei dem Code

    void FuncA(int& abc) {
    	printf("%i", abc);
    	printf("\n");
    	abc=3;
    	printf("%i", abc);
    	printf("\n");
    }
    

    Folgenden Fehler an: [Error] expected ';', ',' or ')' before '&' token



  • Nein, ein C brauchste Pointer.
    Aber wieso auf einmal C?



  • freddy krüger schrieb:

    Gibt es dies auch in C?

    Also mir reicht deine Dummheit jetzt.


Anmelden zum Antworten