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.
-
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.