referenzen übergeben



  • moin

    ich hab 2 Dateien eine ist das Hauptprogram in der anderen ist eine Schnittstelle
    nun möchte eine Funktion der Schnittstelle ausführen: "init"
    dieser will ich eine Referenz eines arrays übergeben, dieser Array soll dann von init global definiert werden
    so hab ich mir das ganze vorgestellt:

    int a[] = {0,0}; //soll die Standardeinstellung sein

    void init(int &b[]) //das geht schonmal nicht Compiler meckert das ich die Referenz eines Array erzeugen will, aber das will ich ja auch 🙄
    {
    a = b; //geht auch nicht er meint b wäre ein anderer Datentyp als a
    }

    was mach ich den falsch? a hat doch den gleichen Datentyp wie b
    und der erste Fehler ist eh sinnlos

    ich hab noch nich so wirklich Ahnung von C++ kann aber sehr gut Java
    deswegen muss ich erstmal blicken wie das so alles funktioniert



  • In C gibt es keine Referenzübergabe.
    Übergebe einfach den Zeiger auf b also:

    void init(int b[])
    //oder
    void init(int *b)
    

    In C++ gibt es Referenzübergabe aber vorher muss du dich entscheiden ob du nun in C oder C++ programierst.



  • Und auch wenn der Compiler das unter bestimmten Bedingungen (explizite Initialisierung) selber ermitteln kann, zu einem Array-Typ gehört auch immer die Größen-Angabe - b ist ein int[2], a ist eine Referenz auf ein unbestimmtes int-Array.



  • Zeiger hab ich auch schon probiert
    aber wenn ich nun in der Schnittstelle einen Zeiger habe
    zB auf int i = 1
    und ich will von der Schnittstelle eine Funktion aufrufen die nun keinen Zeiger sondern ein normales int haben will
    was soll ich dann machen? ich kom ja nicht mehr an den int

    ich benutz übrigens C++



  • um an das unterliegende int zu kommen, mußt du den Zeiger dereferenzieren:

    void lib_func(int input);
    
    void my_func(int* data);
    {
      lib_func(*data);
      //...
    }
    

Anmelden zum Antworten