existe-t-il une fonction réellement dans C? En fait, je voulais retourner plusieurs valeur entière à la fois. Le code ci-dessous n'est pas valide évidemment mais c'est ce que je pense. Y a-t-il une autre méthode pour y parvenir?
3 Réponses :
Nous pouvons envelopper le tableau dans une structure.
#define MAX_N 32 typedef struct{ int n; int result[MAX_N]; } Array; Array linearSearch(){ Array arr; //do something return arr; }
Vous avez déclaré résultat code> à l'intérieur d'une fonction comme mémoire de pile et vous renvoyez son adresse. Cette adresse ne sera pas valide après que la fonction renvoie (la mémoire allouée pour cette fonction est distribuée). Soit déclarez-le dynamiquement et renvoyez-la, il est adressé ou déclarez-le dans votre fonction d'appel et transmettez-le comme argument en tant qu'argument à
linearrsearch () code> ou vous pouvez même le rendre global, tout comme vous pouvez pour la recherche Code> p>
Maintenant, j'ai réalisé que c'est une question très stupide mais une réponse courte, non. Ce que j'ai fait est que j'ai déclaré une variable de tableau globale, puis je transmettais la valeur dans la matrice. Avec cela, je peux rappeler la valeur dans le tableau.
int marks[5] = {90, 70, 90 ,50, 40}; int search = 90; //global variable int result[5]; int count = 0; void linearSearch(){ for(int i = 0; i < 5; i++){ if(marks[i] == search){ result[count] = i; index++; } } }
Non. En enterrer votre réseau dans une structure et retourner cela. Vous en avez besoin de tout de même pour que l'appelant puisse savoir combien de résultats (le cas échéant) que vous avez trouvé (i.e.
index code> peut également être membre de ladite structure).