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 sinnlosich 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 intich 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); //... }