Funktion in der Funktion
-
EDIT: Vielen Dank roflo. Jetzt hat es geklappt!
-
Gut
-
Überhaupt nicht gut.
Die Dreidimensionalität ist Nonsens, 2 Dimensionen reichen völlig:void ersteFunktion(int (*arr)[9])
-
Also so wie es roflo vorgeschlagen hat, passt es sehr gut.
Kurze Frage noch:
Wie verhindert man, dass wenn man die Funktionprintf("%d",funktion());
anwendet, ein return-Wert in der Konsole zurückgegeben wird? Bei mir ist es häufig nur eine Null. Auch wenn ich das return 0; weglasse.
-
Die Frage ist jetzt bitte hoffentlich nicht dein Ernst?
Wenn du nix ausgeben willst, dann rufprintf
nicht auf
-
Ne das problem ist, dass ich über printf die funtktion ausdrucken will, in der eine matrix steht. Das klappt auch nur steht am Ende (in der konsole) immer eine 0. also je nach dem was ich hinter dem return angebe. Und ich hätte gerne, dass diese 0 nicht ausgedruckt wird.
Es schaut so in etwa aus:
1 2
3 4
0 <--- gehört nicht zur matrix
-
Wird das
1 2 3 4
in der Funktion funktion ausgegeben?
Schon mal einfach
funktion();
benutzt?
Sonst zeig minimalen, vollständigen Code, der dein Ergebnis reproduziert.
-
Hier der Code:
#include <stdio.h> #include <stdlib.h> // Werte der Matrix init(int (*matrix)[2][2]) { // Zeiger der Matrix (*matrix)[0][0] = 0; // Zeile 0 Spalte 0 (*matrix)[0][1] = 1; // Zeile 0 Spalte 1 (*matrix)[1][0] = 2; // Zeile 1 Spalte 0 (*matrix)[1][1] = 3; // Zeile 1 Spalte 1 return 0; } //Print-Funktion print(){ int matrix[2][2]; // Referenzierung: Erhält Adresse von matrix init(&matrix); int i, j; // Funktionsweise: Starte in der 0. Zeile (i=0), dann zähle Spalten bis (j < MAX) und beginne eine neue Zeile (\n) // Starte in der 1. Zeile (i=1), ... // Schleife fuer Zeilen, Y-Achse for(i=0; i<2; i++) { // Schleife fuer Spalten, X-Achse for(j=0; j<2; j++) { printf("%d ", matrix[i][j]); } printf("\n"); } return 0; } // Hauptfunktion int main(int argc, char *argv[]) { // Gebe Druckfunktion (print()) aus printf("%d",print()); return 0; }
-
Der rückgabewert von print wird printf als Argument übergeben. Wo ist jetzt das Problem?
-
Das Kommentar "// Gebe Druckfunktion (print()) aus" ist völliger Blödsinn.
Du musstprint()
nicht "innerhalb" vonprintf
aufrufen damit es selbstprintf()
verwenden kann.Am Schluss wird eine "0" zu viel ausgegeben? Na rate mal was für ne "0" das ist. Das ist die 0 die von print zurückgegeben wird, und vom printf in Main rausgeschrieben.
=>int main(int argc, char *argv[]) { // Druckfunktion aufrufen print(); return 0; }
Tadaa