Salut,
Voilà plusieurs heures que je m'arrache les cheveux sur le problème suivant : impossible de passer un tableau de int en paramètre à une fonction. En fait, c'est très simple : je déclare un tableau dans main(), et je souhaite l'initialiser (taille et contenu) à partir d'une fonction saisieTableau(), mais rien à faire : que des erreurs à la compilation.
Malheureusement malgré mes recherches et mes lectures, je ne m'en sors pas...voici le code :
Ce code va paraître absurde, car je le modifie depuis des heures pour essayer de comprendre le problème, à tel point que ça finit par ne ressembler à rien. Mais ma dernière idée était de pouvoir allouer dynamiquement la mémoire au tableau dans saisieTab(), puis de le remplir...mais une fois revenu dans le main(), il ne se passe rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <stdio.h> #include <stdlib.h> void saisieTab(int tab[], int n) { tab = malloc(8 * sizeof(int)); int i = 0; int a = 5; for (n = 0; n != 3; n++) { tab[n] = a; a = a * 10; } for (i = 0; i != 3; i++) { printf("\nAff 1.5 : %d\n", tab[i]); } } int main() { int n = 3; int *tab = malloc(1 * sizeof(int)); int i = 0; for (i = 0; i != n; i++) { printf("\nAff 1 : %d\n", tab[i]); } saisieTab(tab, n); for (i = 0; i != n; i++) { printf("\nAff 2 : %d\n", tab[i]); } return 0; }
Avec cette version, j'obtenais presque ce que je voulais (le contenu du tableau initial, tab, était bien modifié par saisieTab()) :
Malheureusement, le n - censé représenter la dimension du tableau - ne sert à rien, de plus la taille du tableau est fixe et déterminée par int tab[] = {1,2,3}; : or, ce n'est pas le but que je recherche...moi je veux demander à l'utilisateur de saisir un n et retrouver ensuite l'usage de ce n dans saisieTab() ==> j'ai donc pensé à demander la saisie de n directement dans la fonction, mais comme je l'explique pour mon premier code, le tab déclaré dans main() reste le même...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <stdio.h> #include <stdlib.h> void saisiTab(int tabss[3], int n) { tabss[0] = 55; int i = 0; int a = 5; for (n = 0; n != 3; n++) { tabss[n] = a; a = a * 10; } for (i = 0; i != 2; i++) { printf("\nAff 1.5 : %d\n", tabss[i]); } } int main() { int tab[] = {1,2,3}; int i = 0; int n = 3; for (i = 0; i != 3; i++) { printf("\nAff 1 : %d\n", tab[i]); } saisiTab(tab, n); for (i = 0; i != 3; i++) { printf("\nAff 2 : %d\n", tab[i]); } return 0; }
Merci d'avance pour votre aide'
Partager