Einfache Syntaxfrage



  • Guten Tag

    Ich möchte in meinem C#-Projekt FFmpeg nutzen. Dazu muss ich structs übersetzen. Ich bin auf folgenden Member gestossen und kann eigentlich nichts damit anfangen:

    int16_t (*motion_val[2])[2];
    

    In der Dokumentation wird angegeben:

    int16_t (*[2] motion_val)[2];
    

    In diesem Fall bedeuten diese zwei Schreibweisen dasselbe, bzw. sind inhaltlich identisch?

    Meine momentane Vermutung ist, dass das ganze ein Array mit 2 Elementen darstellt, wobei jedes Element ein Pointerarray mit wiederum 2 Elementen ist, welche je auf die Adresse einer short-Variable zeigen.

    Kann mir jemand sagen, wie falsch meine Vermutung ist und mir die richtige Lösung verraten?

    mfg



  • - nein, die 2. Variante ist falsch

    http://cdecl.ridiculousfish.com/?q=short+(*motion_val[2])[2]

    int16_t ist ein erst mit C99 eingeführter Standarddatentyp und muss nicht unbedingt äquivalent zu short int sein; deshalb funktioniert auch o.g. Link nur mit dem portableren Standarddatentyp short.


  • Mod

    Das ist ein Array (das innere [2]) von zwei Zeigern (das 😉 auf jeweils ein Array (das äußere [2]) von 2 int16_t (der Typ am Anfang). Hoffe ich hab's selber richtig entziffert, manchmal ist C schon ganz schön kryptisch.

    edit: Och, zu spät. Coole Seite, Wutz! 👍 Und es tut gut, von einem Computer bestätigt zu werden 🙂



  • Danke für die Antwort, denke das hilft mir.


Log in to reply