7x7-7 schrieb:
historisch bedingten Effekt, der während der zunächst iterativ verlaufenden Entwicklung der Programmiersprache C entstanden ist.
Tatsächlich ist C aus der Praxis heraus entstanden - d.h. von Profis, die wissen was sie können und wollen.
Die meisten anderen Sprachen sind von Theoretikern entworfen worden, die Wert auf leichte intuitive Bedienbarkeit legen - quasi damit auch noch der letzte Depp als Programmierer Unheil anrichten kann.
Problematisch wird es dann, wenn solche Sprachverständnisse aufeinandertreffen, wie bei C-Zeigern und C++.
Dann wird nach dem C++-Motto einfach alles irgendwie (mit C++ Standard(!) Sprachmitteln) zurechtgecastet, weil die Typ"sicherheit" von C++ sowas verlangt, und hinterher wird rumgejammert, wenn man durch solche Casts den C++-Compiler zunächst mal ruhiggestellt hat, sich aber dann unerwartete Ergebnisse einstellen.
Und deshalb gehören C Zeiger nicht C++ Hände und zumindest nur in solche, die von C kamen und "auf"gestiegen sind und nicht umgekehrt.
7x7-7 schrieb:
übersetzt wohl der Compiler die semantisch identisch anmutende Zeichenfolgen a[1][2] und b[1][2] völlig unterschiedlich, wenn int**a und int b[100][100] definiert wurden.
Der C Compiler übersetzt "identisch anmutende Zeichenfolgen" nicht "völlig unterschiedlich" sondern "Ausdrücke" "immer gleich":
Objekte haben Typ und Wert, der Compiler weiß natürlich, dass das eine den Typ Zeiger auf int* und das andere Zeiger auf int[100] hat, und übersetzt für unterschiedliche und inkompatible Typen natürlich was anderes.
Du hast recht, C ist nicht intuitiv - das war auch nie der Anspruch von Ritchie (s.o.) und ist somit nichts für Anfänger oder Sprachumsteiger, die gewohnt sind, dass ihnen alles mundgerecht gereicht wird.