C-Programmierung: Wie die Rückkehr zur Haupt-und eine andere Funktion aufrufen?
#include <stdio.h>
#include <stdlib.h>
int get_num(int num);
void read_num(int num);
int main()
{
int num;
do
{
get_num(num);
if(num == 1)
read_num(num);
}while(num != 0);
}
int get_num(int num)
{
printf("Please enter an integer from 0 and 2\n");
scanf("%d", &num);
if (num == 1)
return num;
}
void read_num(int num);
{
printf("Hello.\n");
}
Wenn der Benutzer 1, der read_num-Funktion nie aufgerufen wird? Ich verstehe nicht, warum? Ich dachte, return num; liefert was num zurück zum main. Und wenn num == 0, wird das Programm beendet, und wenn num == 1, dann ist die read_num Funktion aufgerufen werden soll.
Ja, es kehrt zurück zu
Ich sehe. Also, wie kann ich rufen Sie die Funktion read_num, wenn der Benutzer 1? Wie gebe ich den integer "1" zurück zur Hauptseite?
num =get_num(num), oder verwenden Sie einen Zeiger auf num. erfahren Sie, wie pass Wert per Referenz oder per Wert
main
, aber man kann nie verwenden Sie die return-Wert. Ihre scanf
Aufruf wird nur ausgeführt, ändern Sie das argument-version von num
nicht die, die main
hat.Ich sehe. Also, wie kann ich rufen Sie die Funktion read_num, wenn der Benutzer 1? Wie gebe ich den integer "1" zurück zur Hauptseite?
num =get_num(num), oder verwenden Sie einen Zeiger auf num. erfahren Sie, wie pass Wert per Referenz oder per Wert
InformationsquelleAutor James | 2013-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine ganze Menge falsch mit Ihrem code:
main()
undgetNum()
sind sowohl deklariert als Rückgabe ein int, dochmain()
kehrt nie zurück und allesgetNum()
nur zurück, wenn der Benutzer1
. Wenn Sie eine Funktion Rückkehr alles andere alsvoid
, stellen Sie sicher, dass jeder mögliche Kontrollfluss verfügt über eine entsprechendereturn
- Anweisung.Dann gibt es das Problem mit den call-by-value vs. call-by-reference. Sie sollten wirklich schauen, dass Sie sich, denn dies ist nicht der richtige Ort, um zu erklären, und viele Menschen haben darüber geschrieben, besser als ich es kann.
read_num(num);
num ist nicht definiert, hier könnten Sie verstehen das besser, wenn man weiß, wie der C-Parameter übergibt.
Das gleiche gilt für die Rückgabe-Werte. Funktionen in C, die Werte zurückgeben (deklariert durch den Rückgabetyp-wie in
int get_num()
. Wenn Sie eine Funktion aufrufen möchten, die Sie zuweisen können, diereturn
Wertes an eine variable. In main schreiben könnteint number = get_num()
Dein code Aussehen könnte etwas wie das, aber ich bin mir nicht sicher, ob das, was Sie wirklich wollen, es zu tun:
InformationsquelleAutor Sebastian
C verwendet pass-by-value nicht als Verweis übergeben, als solche sind Sie nur mit einer KOPIE der gespeicherte Wert in der variable "num" Ihrer wichtigsten Funktion, wenn Sie geben Sie get_num. Manipulation der Wert der variable "num" in get_num nicht jede änderung des Wertes der variable "num" in der main-Funktion.
Den "berechneten" Wert in der main-Funktion, die Sie zuweisen der Rückgabewert von Ihrem get_num-Funktion, um die variable "num" in der main-Funktion.
Ersetzen Sie einfach die Zeile
mit
sollte alles in Ordnung sein.
EDIT: Für die Rückkehr von mehr als einem Wert, den Sie haben würde, um zu übergeben-Zeiger auf den gewünschten Speicherort für die Rückgabewerte einer Funktion.
Hier als Beispiel eine Variante des Programms mithilfe eines Zeigers statt.
Danke! Was ist, wenn ich zurückkehren wollen zwei Werte zurück zur Hauptseite? Wenn der Benutzer 1, der Funktion read_num genannt wird. Wenn der user eingibt 2, dann ist die Funktion write_num genannt wird. In diesem Fall habe ich um die Rückgabe von zwei Werten zurück zu den wichtigsten, muss ich verwenden, einen Zeiger, wenn ich zurückkehren wollen zwei Werte?
InformationsquelleAutor mikyra