Bonjour,
J'aimeré savoir si il est possible de passer à traver une fonction un argument de type int et un argument de type char?
Merci pour vos réponses.
pierre
Bonjour,
J'aimeré savoir si il est possible de passer à traver une fonction un argument de type int et un argument de type char?
Merci pour vos réponses.
pierre
Oui, mais le char sera automatiquement promu en int, et si le char était négatif, le int sera négatif aussi.
Que signifie "passer à traver[s] une fonction" ?
Que veux-tu faire exactement ?
Quel est le code qui pose problème ?
Nota. Bien qu'il soit techniquement possible d'utiliser un paramètre de type char (ou short), il sera promu en int au prix d'un léger supplément de code machine (plus de temps, plus de place...). On peut éviter ça en utilisant le type int. Ca ne change rien sur le plan du fonctionnement, mas ça allège le code machine.
Voici un exemple:
fonction principale:
la sous fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int main(){ char tab[10]; int i; fonction(tab, i); }
Mais sa ne marche pas, j'espère avoir été plus clair. Merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int fonction(char tableau[10], int p){ scanf("%s", tableau); scanf("%d", p); return(tableau[10], p); }
pierre
Ton code est incomplet...
Plusieurs principes de base du C ne sont pas maitrisés :
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 Project : Forums Compiler : GNU GCC Compiler (called directly) Directory : D:\dev\forums\ -------------------------------------------------------------------------------- Switching to target: default Compiling: main.c main.c:1: warning: function declaration isn't a prototype main.c: In function `main': main.c:4: warning: implicit declaration of function `fonction' main.c:5: warning: control reaches end of non-void function main.c:3: warning: 'i' might be used uninitialized in this function main.c: In function `fonction': main.c:8: warning: implicit declaration of function `scanf' main.c:9: warning: format argument is not a pointer (arg 2) main.c:10: warning: left-hand operand of comma expression has no effect Linking console executable: console.exe Process terminated with status 0 (0 minutes, 1 seconds) 0 errors, 7 warnings
- il n'y a pas de 'sous fonctions', mais des fonctions.
- les passages de paramètres se font exclusivement par valeur.
- une fonction ne peut pas retourner plus d'une valeur.
- tableau[10] est l'élément d'indice 10 d'un tableau de taiille 10, c'est à dire dont les index valides vont de 0 à 10-1, soit 9. Le comportement est donc iindeterminé
- scanf() attend une adresse
- un programme qui compile n'est pas forcément correct.
Je te conseille de te former sérieusement au langage C avant de continuer. Il y a des livres et des tutoriels. Des références sur ce site (et le mien).
Le langage C est puissant, mais c'est une arme redoutable si on ne sait pas s'en servir. On a vite fait de perdre un bras ou un œil en le manipulant...
Ton code corrigé :
Pose des questions si tu ne comprends pas.
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 #include <stdio.h> void fonction (char tableau[10], int *p) { printf ("Entrer une chaine : "); scanf ("%9s", tableau); printf ("Entrer un entier : "); scanf ("%d", p); } int main (void) { char tab[10]; int i; fonction (tab, &i); printf ("tab = '%s'\n", tab); printf (" i = %d\n", i); return 0; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager