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.


Anmelden zum Antworten