Hallo Achim
ich denke mal, dass es erlaubt ist, aber gesehen habe ich dass
noch nie. Gibts dafür in C eine „Erlaubnis“ oder eine
Allgemeinregel, oder sogar ein Anwendung?
int (* GetZeiger(int i) )[2];
Das Problem des C-Designs ist hier iirc, dass
man die Array-Designation [2] nicht direkt
hinter den Datentyp schreiben kann:
int\*[2] GetZeiger(int i);
- denn dann würde auch die Klammerung
unnötig werden, die [] klebt ja nach links.
In Java z.B. wurde das dann letzlich behoben.
Daher sieht man die „unschöne“, weil nicht den
C-Sehgewohnheiten konforme, Konstruktion
type ( \*func(type para) ) [N]
wirklich nicht so oft.
Man würde ja hier die Sache vereinfachen, in dem man,
wie Du weisst, einen Typ für die wesentliche
Komponente „int [2]“ definiert:
typedef int INT2[2];
INT2 values [2] = {
{ 1, 2 },
{ 3, 4 }
};
INT2\* GetZeiger(int i)
{
return values + i;
}
int main( void )
{
INT2 \*zg;
...
Grüße
CMБ