Impression des Tableaux en Fonction séparée en C
Je suis en train d'imprimer toutes les valeurs dans les quatre tableaux en les envoyant à une fonction distincte. Mais, le problème est que je ne peut pas obtenir la fonction d'impression de l'ensemble des entiers dans le tableau car je ne suis pas sûr de ce que je pourrais définir l'état dans le for
boucle, qui serait universel pour une matrice de taille quelconque.
Maintenant la fonction imprime uniquement les 11 premiers numéros. Je suppose que c'est parce que le premier numéro de ce tableau est de 11.
#include <stdio.h> void print_array(int a[]); void find_max(int b[]); void find_min(int c[]); void recherche(int d[]); void TRIER(int e[]); int main(void) { int première[11] = {7,7,7,7,7,7,7,7,7,7,7}; int deuxième[14] = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2}; int troisième[16] = { -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; int quatrième[23] = { -3, 4, 33, 22, 9, -100, 2, 56, 57, 55, 2, 90, 2234, 32, 8, 123, 2, 33, 22, 22, 33, -1, -3}; print_array(&deuxième[0]); return(0); } void print_array(int a[]) { int i; for(i=0;i<*a;i++) { printf("%d ",a[i]); } }
Vous devez vous connecter pour publier un commentaire.
Passer un deuxième argument à ta fonction qui prend la longueur du tableau. Par exemple:
La fonction n'a aucun moyen de savoir quand le tableau se termine. Cet élément de données n'existe tout simplement pas, sauf si vous passer manuellement. Le tableau est juste une séquence d'octets dans la mémoire, il n'a pas de délimiteur de fin. Donc, vous devez ajouter un paramètre à la fonction de dire la longueur du tableau.
Oui, oui, c'est la façon dont il fonctionne dans C.
Modifier la fonction d':
Et de modifier l'appel de la fonction pour passer à la taille:
Qui va calculer la taille de la mémoire de la matrice (pour un 4 int tableau sur un système 32 bits ça va être 16) et le diviser par la taille d'un int (sur un système 32 bits, c'est 4 octets).
en C, vous pouvez le faire avec une fonction et macro:
de sortie:
sizeof(arr)
appel sera de retoursizeof(char *)
au lieu de cela, en raison de "tableau de décroissance".Modifier cette ligne
À
Parce que,
&le second[0] transmet simplement la référence à l'élément à 0e position,ce qui ne sera pas en mesure de parcourir le tableau.
Et nous ne pouvons pas traverser le tableau passé par référence, sans la taille.Comme il y a des tableaux de taille diverse, nous pouvons calculer la taille de la matrice par,
Changer la ligne
À
Et la fonction de la matrice de l'impression sera comme,