Die Funktion makezero ist mit Rueckgabetyp void deklariert: d.h. Bei einem Return, darfst du auch nichts zurueckgeben:
void makezero(int **u, int v, int w) {
int i,j;
u = malloc(v*sizeof(int*));//oder (int*)malloc(v*sizeof(int))
if (u == NULL) {
puts("Fehler bei der Speicherzuweisung.");
return;
}
for (i=0; i<v;i++) {
u[i] = malloc((v)*sizeof(int));
if (u[i] == NULL) {
puts("Fehler bei der Speicherzuweisung.");
return;
}
}
for (i=0; i<v; i++) {
for (j=0; j< v; j++)
u[i][j] = 0;
}
}
Alles anzeigen
Dafuer ist die main-Funktion mit dem Rueckgabetyp int definiert: da solltest du auf jeden Fall etwas returnen: sollte kein Fehler auftreten EXIT_SUCESS (0, Makro in stdlib.h) bzw. einen Integer ungleich 0 (z.B. EXIT_FAILURE, ebenfalls in stdlib.h) im Fehlerfall.
Nur weil ich es sehe (Fuer Bib.Fkt verwende ich die 'man-page Syntax' [1]: d.h. Funktionsname und in Klammer welche Section der man-pages; klarerweise ist das dann nur auf Linux/Unix Systeme so auffindbar):
- nichts zurueckzugeben (insb. im Fehlerfall) bei makezero ist natuerlich nicht optimal: Du koenntest noch den Fehlercode abfragen (in der globalen Variable errno) od. diesen gleich formatiert mit perror(3) ausgeben und per exit(3) terminieren.
- Klammerung von der Variable v hier nicht notwendig: u[i] = malloc((v)*sizeof(int));
- du solltest in sauberen Programmen auch noch jeden per malloc angeforderten Speicher wiederum freigeben, wenn du ihn nicht mehr brauchst (jedenfalls noch vor der Terminierung).
- ad '//oder (int*)malloc(v*sizeof(int))': Casten brauchst du in C nicht, da malloc void* zurueckgibt
- Zur Initalisierung der einzelnen Int-Arrays (Speicher der vom 2. malloc kommt) koenntest du auch gleich in der ersten For-Schleife in makezero memset(3) (in string.h) verwenden und auf die geschachtelte For-Schleife am Schluss verzichten
- 'sprechende' Variablennamen verwenden - auch in makezero und einheitliche Formatierung
- kein scanf verwenden, sondern fgets u. sscanf [2] [3]
Ich kann die LVA 'Betriebssysteme UE' empfehlen, falls du rasch in C hineinkommen willst bzw. Programmierpraxis suchst.
[1] http://en.wikipedia.org/wiki/Man_page
[2] http://www.giannistsakiris.com/index.php/2008…avoid-using-it/
[3] http://ti.tuwien.ac.at/rts/teaching/c…ing/Richtlinien