Array übergeben
-
Hallo zusammen,
ich habe ein Problem mit C. Und zwar habe ich einen Code in C# geschrieben und muss diesen nun zwecks DSP in C umwandeln. Leider kommme ich damit irgendwie überhaupt nicht klar. Ich will einer Funktion einfach 2 Array übergeben. Aber egal wie ich's versucht habe, irgendwie hat der Compiler immer rumgemotzt.
static double GetCorrelation(double array1[], double array2[]) { //wenn array1 größer ist als array2 dann dies ausführen if ((sizeof(array1) / sizeof(double)) > (sizeof(array2) / sizeof(double))) { double x[] = array1; double y[] = array2; } else { double x[] = array2; double y[] = array1; } }
Aber der Compiler sagt mir in der Klammer "invalid initializer"! Ich verstehe nicht warum? Wäre echt nett wenn ihr mir kurz sagen könntet wo mein Fehler liegt. Mit C und C++ habe ich noch nicht wirklich viel gemacht.
Gruß Stefan
-
Erstens: In C übergibt man keine echten Arrays, sondern "nur" Zeiger auf den Array-Anfang.
Zweitens: Die Ermittlung der Arraygröße über sizeof() funktioniert nur an der Stelle, wo das Array definiert wurde - in deiner Funktion liefert das unsinnige Werte (hängt auch mit erstens zusammen) - du mußt die Größe schon explizit oder implizit (Kennzeichnung des letzten Elements o.ä) mitgeben.
Drittens: Arrays können nicht durch Kopier-Semantik initialisiert werden - da hilft eventuell memcpy() weiter.
PS: Und viertens: Die Variablen x und y sind nutzlos - weil sie direkt am Ende des if- bzw. else-Blocks aus dem Scope fallen und danach nicht mehr angesprochen werden können.