Utilisation des fonctions dans c++
Fermé
mohamed
-
10 janv. 2006 à 00:40
mamiemando Messages postés 33643 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 avril 2025 - 9 juin 2006 à 20:33
mamiemando Messages postés 33643 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 avril 2025 - 9 juin 2006 à 20:33
Salut vous pouver m'aider a comprendre comment intergrer des fonctions dans un programme c++
A voir également:
- Matthias utilise les réseaux sociaux.que doit-il faire dans chacune des situations suivantes ?
- Suivi des modifications word - Guide
- Matthias utilise les réseaux sociaux. que doit-il faire dans chacune des situations suivantes ? - Forum Études / Formation High-Tech
- Vous avez utilisé ce numéro de téléphone à de trop nombreuses reprises - Forum Gmail
- Comment savoir si quelqu'un utilise mon adresse ip - Guide
- Sandra a décidé de mieux contrôler son image et sa présence sur différents réseaux sociaux. qu’est-il possible de faire sur ces réseaux ? - Forum Facebook
3 réponses
Jean-François Pillou
Messages postés
19261
Date d'inscription
lundi 15 février 1999
Statut
Webmaster
Dernière intervention
16 février 2023
63 274
10 janv. 2006 à 11:07
10 janv. 2006 à 11:07
SALUT, j'aimerais avoir des informations concernant la fonction en C++.
En plus un exmple montrant comment passer un tableau en parametre a une fonction.
La difference entre argument passe par valeur et argument passe par reference.Mercie bien pour les reponses.
En plus un exmple montrant comment passer un tableau en parametre a une fonction.
La difference entre argument passe par valeur et argument passe par reference.Mercie bien pour les reponses.
mamiemando
Messages postés
33643
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 avril 2025
7 845
9 juin 2006 à 20:33
9 juin 2006 à 20:33
1) Rappels : Adresse, références, ...
Considérons le code suivant :
Un argument passé par argument à une fonction f est recopié en mémoire. Toute modification apportée à un argument n'est prise en compte que dans le corps de cette fonction.
Si l'argument est passé en référence, tout se passe en mémoire comme si on passait un pointeur, sauf que syntaxiquement parlant, tout se passe comme si on manipulait directement l'objet (fonction g).
Je te redonne la syntaxe quand on passe l'adresse d'un paramètre. C'est cette méthode qui est utilisé en C car les références n'existent qu'en C++. Notons que contrairement à une référence, on n'est pas obligé d'initialiser un pointeur (une adresse).
L'intérêt du passage par référence (ou par pointeur) est qu'il est très rapide si le paramètre est gros, car on ne recopie que l'adresse en mémoire (alors que sinon on récopie tout l'objet). De plus le passage par référence / pointeur permet de modifier un paramètre. Ca permet par exemple de renvoyer un code d'exécution tout en stockant des résultats dans des variables passées en paramètre. Exemple :
2) Passer un tableau en paramètre
Si tu utilises un std::vector<int> on passe la référence surtout si ce vector est grand :
Si tu utilises un tableau classique int * :
On pourrait mettre int * & mais comme un int * est déjà une adresse il n'y a rien a gagner...
Bonne chance
Considérons le code suivant :
#include <iostream> void f(int i){ ++i; std::cout << "f : i = " << i << std:endl; // affiche 1 } void g(int j){ ++j; std::cout << "g : j = " << j << std:endl; // affiche 1 } void h(int *k){ ++ (*k); std::cout << "h : (*k) = " << (*k) << std:endl; // affiche 1 } int main(){ int i=0; f(i); std::cout << "main : i = " << i << std::endl; //affiche 0 int j=0; g(j); std::cout << "main : j = " << j << std::endl; //affiche 1 int k=0; h(&k); std::cout << "main : k = " << k << std::endl; //affiche 1 return 0; }
Un argument passé par argument à une fonction f est recopié en mémoire. Toute modification apportée à un argument n'est prise en compte que dans le corps de cette fonction.
Si l'argument est passé en référence, tout se passe en mémoire comme si on passait un pointeur, sauf que syntaxiquement parlant, tout se passe comme si on manipulait directement l'objet (fonction g).
Je te redonne la syntaxe quand on passe l'adresse d'un paramètre. C'est cette méthode qui est utilisé en C car les références n'existent qu'en C++. Notons que contrairement à une référence, on n'est pas obligé d'initialiser un pointeur (une adresse).
L'intérêt du passage par référence (ou par pointeur) est qu'il est très rapide si le paramètre est gros, car on ne recopie que l'adresse en mémoire (alors que sinon on récopie tout l'objet). De plus le passage par référence / pointeur permet de modifier un paramètre. Ca permet par exemple de renvoyer un code d'exécution tout en stockant des résultats dans des variables passées en paramètre. Exemple :
#include <string> int init_string(std::string & s){ if (s=="tapir"){ s="plop"; return 0; } s="tapir"; return 1; }
2) Passer un tableau en paramètre
Si tu utilises un std::vector<int> on passe la référence surtout si ce vector est grand :
#include <vector> void f(std::vector<int> & v){}
Si tu utilises un tableau classique int * :
void f(int * v){}
On pourrait mettre int * & mais comme un int * est déjà une adresse il n'y a rien a gagner...
Bonne chance