Array aus Funktion an die Main übergeben
-
Vielleicht noch eine kurze Anmerkung, falls jemand anderes auf diesen Thread stößt:
Laut dieser Dokumentation:
http://www.tutorialspoint.com/c_standard_library/c_function_calloc.htmWird die Callocfunktion andersherum definiert:
int *a = f( calloc(n, sizeof*a), n );anstatt falscherweise:
int *a = f( calloc(sizeof*a, n), n );
-
Es ist unerheblich in welcher Reihenfolge die Parameter kommen.
Beide sind vom Typ
size_t
und die Größe des Speichers ist das Produkt aus beiden Werten.
-
Ich bekomme folgende Fehlermeldung aus dem Compiler:
t.c: In function 'int main()': t.c:24:26: error: invalid conversion from 'void*' to 'int' [-fpermissive] *a = calloc(n, sizeof*a);
Was soll ich tun?
-
Verrain schrieb:
Was soll ich tun?
Keine Veränderungen an Quelltexten vornehmen, die du nicht verstehst. Vielleicht hilft es auch, ein gutes Anfängerbuch zu lesen, Kapitel Pointer. Denn dann verstehst du die gegebenen Hilfestellungen auch.
-
Ich habe den obigen Beispielcode 1 zu 1 kopiert und er hat NICHT kompiliert!
Ich habe nichts daran verändert. Alles was ich brauche ist ein funktionierendes Beispiel!
-
Verrain schrieb:
Ich habe den obigen Beispielcode 1 zu 1 kopiert und er hat NICHT kompiliert!
Aha.
Wutz schrieb:
int *a = f( calloc(sizeof*a,n), n );
vs.
Verrain schrieb:
*a = calloc(n, sizeof*a);
-
int *a = f( calloc(sizeof*a,n), n );
ist etwas anderes als:
int *a; *a = f( calloc(sizeof*a,n), n );
oder
int a; *a = f( calloc(sizeof*a,n), n );
-
Okay, dass kam nach einigem rumprobieren raus.
Dennoch hat er vergessen, dass calloc einen void* Typ zurück gibt, er in der Funktion aber an der Stelle ein int* deklariert hat....
-
Er hat nichts vergessen.
Du hast vergessen, dich über die Grundlagen von C zu informieren.
-
Verrain schrieb:
Dennoch hat er vergessen, dass calloc einen void* Typ zurück gibt, er in der Funktion aber an der Stelle ein int* deklariert hat....
Hat er nicht. Falls du ein Problem mit den Pointerumwandlungen haben solltest, dann bedeutet dies, dass du einen C++-Compiler für deinen C-Code benutzt hast. Bevor du anderen Leuten Missinformation vorwirfst, solltest du vielleicht erst einmal sicherstellen, ob du überhaupt weißt, von welcher Sprache du überhaupt redest.