Lulle schrieb:
mein Array ist sehr wohl ein Array da ein Array genaugenommen aus Zeigern besteht.
natürlich gibt es zweidimensionale Arrays, besser bekannt als Zeiger auf Zeiger.
Wenn ich den "deppen-cast" benutze, wie würdest du denn einen void Zeiger (den calloc ja bekanntlich zurück gibt) in einen int Zeiger casten??
Du hast keine Ahnung, wovon du redest.
Ein Array ist deswegen noch lange kein Array, weil du deine Lehrvorlagen einfach nachplapperst.
Lies im C Standard nach, was Arrays ist C sind.
Und den Deppen-Cast benutze ich gar nicht, weil ich prinzipiell keine Zeiger-Casts benutze, da sie (im Anfängerkontext immer unnötig) und sonst nur sehr selten notwendig sind, Compilerwarnungen unterdrücken, ein "sicheres" Typkonzept vorgaukeln und nur unnötig Alignmentabhängigkeiten forcieren.
Für deine gesuchte Funktion reicht 1x calloc, mehr brauchst du nicht:
http://ideone.com/5O4kUl
int main() {
int x, y;
x = 6; /* das soll die Dynamik der Dimensionen (erst zu Laufzeit) zeigen */
y = 4;
int (*m)[x] = calloc(y,sizeof*m);
for(int i=0;i<y;++i)
for(int j=0;j<x;++j)
m[i][j]=i+j;
for(int i=0;i<y;++i,puts(""))
for(int j=0;j<x;++j)
printf("%2d",m[i][j]);
free(m);
return 0;
}
Hier ist nirgendwo ein Array vorhanden, und auch kein Cast, und trotzdem ist es ein strikt standardkonformes Programm und läuft mit jedem (C99)konformen Compiler.
Der Gebrauch des subscript-Operators [] ist nur für Deppen gleichbedeutend mit dem Gebrauch eines Array,
der Mehrebenen-Gebrauch [][] ist nur für Deppen gleichbedeutend mit dem Gebrauch eines zweidim. Array,
...