Ich möchte eine Reihe von int Werten einlesen, aber die Größe des Feldes erst zur Laufzeit festlegen.
z.B.
int i;
int *Feld;
scanf("%d",&i);
Feld = malloc(i*sizeof(int));
´da wollte ihc nur mal ausprobieren ob ich so ein feld von i int werten bekomme, das geht aber nicht ! wie geht es denn dann ???
Casten musst du nur bei C++, bei C wird
das automatisch gemacht!
Bei der Standart-Einstellung des Compilers wird nicht automatisch „gecastet“ sondern es wird nicht überprüft was da zugewiesen wird. Das ist nicht das gleiche !!
Leider ist bei den meisten Compilern die Grund-Einstellung so gewählt, dass man die alten c-Programme übersetzen kann. Früher gab es ein separates Programm, namens LINT, welches dann die genaue Typenüberprüffung vornahm. Bei einem ANSY-C-Compiler ist dies eingebaut, muss aber meist erst aktiviert werden.
Bei der Standart-Einstellung des
Compilers wird nicht automatisch
„gecastet“ sondern es wird nicht
überprüft was da zugewiesen wird. Das
ist nicht das gleiche !!
Doch!
Malloc liefert einen void-Zeiger. Bei einer Zuweisung an einen Typ-Zeiger, wird der void-Zeiger automatisch entsprechend des neuen Typs uminterpretiert. Das ist das gleiche wie eine automatische Typkoversion!
und dann sieh Dir mal den Maschinencode
dazu an! Könnte es sein, daß der C-Code
geringfügig schneller läuft? (vernünftige
Compiler vorausgesetzt)
Natürlich. Aber heutzutage ist es wohl billiger sich einfach einen dickeren Rechner anzuschaffen, als einen entwickler zu bezahlen der sich mit solch unnötigen verwicklungen herumschlagen muß.
Ich habe wirklich nichts gegen C aber man muß die Sache mit der Typisierung nicht zu weit treiben.