Programmation en C: Comment faire pour retourner à main et appeler une autre fonction?
#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");
}
Lorsque l'utilisateur entre 1, la read_num fonction n'est jamais appelée? Je ne comprends pas pourquoi? Je pensais que le retour num; retourne ce num retour à la page principale. Et si num == 0, le programme se termine, et si nombre == 1, alors le read_num fonction doit être appelée.
- Oui, elle renvoie à
main
, mais vous n'avez jamais utiliser la valeur de retour. Votrescanf
appel est seulement la modification de l'argument de la version denum
, pas celuimain
a. - Je vois. Alors, comment puis-je appeler la fonction read_num lorsque l'utilisateur entre 1? Comment puis-je passer l'entier "1" retour à la page principale?
- num =get_num(num), ou d'utiliser un pointeur pour num. apprendre à passer de la valeur par référence ou par valeur
Vous devez vous connecter pour publier un commentaire.
Il est tout à fait beaucoup de mal avec votre code:
main()
etgetNum()
sont tous deux déclarés comme retournant un int, maismain()
ne retourne rien etgetNum()
renvoie uniquement si l'utilisateur entre1
. Si vous avez une fonction retournant rien d'autre quevoid
, assurez-vous que tous les flux de contrôle a unereturn
déclaration.Ensuite, il ya le problème avec l'appel par valeur vs appel par référence. Vous devriez vraiment regarder, parce que ce n'est pas le bon endroit pour expliquer et beaucoup de gens ont écrit à ce sujet mieux que je peux.
read_num(num);
num est pas défini ici, vous pourriez comprendre que mieux une fois que vous savez comment C passe les paramètres.
Il en va de même pour retourner des valeurs. Des fonctions en C les valeurs de retour (déclarée par le type de retour que dans
int get_num()
. Lorsque vous appelez une fonction, telle que vous pouvez affecter lareturn
valeur à une variable. En principal, vous pouvez écrire desint number = get_num()
Votre code pourrait ressembler un peu, mais je ne suis pas sûr si c'est ce que vous voulez vraiment faire:
C utilise le passage par valeur passe pas par référence, en tant que tel votre sont tout simplement de travailler avec une COPIE de la valeur stockée dans la variable "num" de votre fonction principale, lorsque vous entrez get_num. La Manipulation de la valeur de la variable "num" dans get_num ne pourra pas faire le changement de la valeur de la variable "num" dans votre fonction principale.
À utiliser la fonction "calculer" la valeur dans votre fonction principale, vous devez affecter la valeur de retour de votre get_num fonction de la variable "num" dans votre fonction principale.
Il suffit de remplacer la ligne
avec
et tout devrait bien se passer.
EDIT: Pour revenir plus d'une valeur, vous auriez à passer des pointeurs à l'emplacement de stockage des valeurs de retour d'une fonction.
Comme un exemple ici une variation de votre programme à l'aide d'un pointeur à la place.