C Programmierung: Zweidimensionale Arrays und Pointer?

Guten Tag,

ich hätte ein paar Fragen zu Pointern im Bezug auf zweidimensionale Arrays und Pointer. Zuerst wollte ich fragen, ob mir jemand die Syntax hinter Pointern für mehrdimensionale Arrays in C erklären kann?

Wenn ich einen Array habe, wie bspw.:

int ary[2][3] = { {1, 2, 3}, {4, 5, 6} };

Nun möchte ich einen Pointer auf diesen Array:

int (*p1)[3] = ary; // Pointer auf int Array der Länge 3
int (*p2)[2][3] = &ary; // Pointer auf 2 dim Array der aus 2 int Arrays der Länge 3 besteht.

Warum werden hier die Indizes hinter dem Pointer geschrieben und nicht etwas wie:

int[2][3] *p2

Wäre das nicht intuitiver? Gibt es hinter der Schreibweise einen logischen Sinn?

Eine weitere Frage zur Syntax wäre, wie man das korrekt aufschreibt, wenn man einen return Value oder einen Funktionsprototypen aus einem Pointer zu einem zweidimensionalen Arrays (mit klar definierter Größe) haben möchte?

Dazu wollte ich noch sichergehen, dass meine Vermutung, warum ich für die Zuweisung bei p2 noch ein & davor hängen muss, die Richtige ist. ary und &ary sind exakt die selben Pointer. Ist es so, weil ary als Pointer auf einen int Array der Länge 3 hinterlegt ist und &ary sozusagen ein Pointer auf einen zweielementigen Array ist, der aus int Arrays der Länge 3 besteht?

Über eine Antwort würde ich mich sehr freuen!

Computer, Technik, programmieren, Informatik, C (Programmiersprache)

Wie programmiere ich ein STM32 Microcontroller?

Guten Abend miteinander,

Ich bin leider kompletter Anfänger auf in dem Bereich embedded System, sollte aber im dualen Studium (gerade begonnen, Praxisphase) einen STM32F4-Discovery (dieses Modell: http://blog.tkjelectronics.dk/wp-content/uploads/2012/04/STM32F4-DISCOVERY_Board.jpg ) mit einem Arm Cortex M4 Prozessor einrichten und etwas darauf rumprogrammieren. Jedoch scheitert es dabei leider schon etwas beim "zum laufen bekommen".

Ich bin kein absoluter Anfänger im Bereich der Informatik, aber in diesem Gebiet schon. Momentan sieht es im Betrieb im Bezug auch fachliche Ansprechpersonen etwas schlecht aus, da coronabedingt wenige da sind und etwas Stress herrscht. Grundsätzlich aktuell nicht tragisch, da ich mir selbst viel beibringen kann, aber bei der Aufgabe habe ich gerade etwas Probleme.

Ich weiß schon nicht welche IDE das unterstützt und halbwegs gut ist, zudem kann ich nicht einfach rumprobieren, da ich jedesmal Lizenzquatsch klären und dann in eine andere Abteilung zu einem Adminstator laufen muss um etwas zu installieren. Visual Studio Code mit PlatformIO scheint es zu supporten, aber, obwohl ich den STLink Treiber installiert habe, wird das Gerät von PlatformIO nicht erkannt (vom PC schon).

Kann mir jemand Ratschläge geben, wie ich das einrichte? Also welche IDE muss ich nehmen und was sind die wichtigen Schritte im Prozess?

Computer, Technik, programmieren, Mikrocontroller, Embedded, Embedded Systems, Informatik, Technologie