Vous êtes sur la page 1sur 63

Les bases du langage C++

Préparé par Jimson Pierre-Louis, ESIH


Séances 1&2

1
Plan de la leçon
⮚ Historique du langage C++
⮚ Les bases du langage C++
▪ La bibliothèque standard de C++
▪ Les entrées/sorties standard en C++
▪ Les types de base
▪ Les commentaires
▪ Les opérateurs
▪ La fonction main

2
Historique du langage C++

3
Introduction (1)
Date d’apparition :
Le C++ est apparu en 1983 et sa dernière révision remonte à 2017
Auteur: Bjarne Stroustrup
Style de programmation (paradigme): procédural, générique et orienté
objet
Les normes:
ISO/CEI 14882:1998
ISO/CEI 14882:2003
ISO/CEI 14882:2011
ISO/CEI 14882:2014
ISO/CEI 14882:2017

4
Introduction (2)
Influencé par :
C, Simula, Ada 83, Algol 68,Clu, Ml

Influence sur :
Ada 95, C#, PHP, D, JavaScript, Java, X++

Implémentations:
GNU Compiler collection, Microsoft Visual C++, Borland C++ Builder,
XCode Tools

5
Historique (1)
C++ est un langage de programmation permettant la programmation
sous de multiples paradigmes comme la programmation procédurale,
la programmation orientée objet (POO) et la programmation
générique.

Le langage C++ n’est pas un progiciel propriétaire, et, par conséquent


n’importe qui peut l’utiliser sans besoin d’autorisation ou obligation de
payer pour avoir un droit d’utilisation.

C++ est l’un des langages de programmation les plus populaires,


compatible avec une grande variété de plateformes matérielles et de
systèmes d’exploitation.
6
Historique (2)
Bjarne Stroustrup a développé C++ au cours des années 1980 alors
qu'il travaillait dans le laboratoire de recherche Bell d'AT&T.

Il s'agissait en l'occurrence d'améliorer le langage C.


Il l'avait d'ailleurs nommé C with classes (« C avec des classes »). Les
premières améliorations se concrétisèrent donc par la prise en charge
des classes, ainsi que par de nombreuses autres fonctionnalités comme
les fonctions virtuelles, la surcharge des opérateurs, l'héritage (simple
ou multiple), les « templates », la gestion des exceptions, etc.

7
Historique (4)
En langage C, ++ est l'opérateur d'incrémentation, c'est-à-dire
l'augmentation de la valeur d'une variable de 1. C'est pourquoi C++
porte ce nom : cela signifie que C++ est un niveau au-dessus du C.

La bibliothèque standard de C est incluses dans celle de C++, c’est-à-


dire un code source C pourra fonctionner en C++.

8
Historique (5)
Stroustrup a commencé à travailler sur C avec classes en 1979.

L'idée de créer un nouveau langage vient de son expérience en


programmation dans le cadre de sa thèse de doctorat.
Stroustrup trouvait que Simula avait des fonctionnalités fort utiles
pour le développement de gros programmes mais qu'il était trop lent
pour être utilisé en pratique en raison d’un problème d'implémentation
du compilateur Simula). Il pensait aussi que BCPL était rapide mais de
trop bas niveau et inadapté au développement de gros logiciels.

9
Historique (6)
Quand Stroustrup commença à travailler pour les laboratoires Bell, on
lui demanda d'analyser le noyau UNIX en vue de faire du calcul
distribué.

Se rappelant sa thèse, il commença à améliorer le langage C avec des


fonctionnalités similaires à celles de Simula. C fut choisi parce qu'il
était rapide, portable et d'usage général.

10
Historique (7)
Dès le départ, le nouveau langage ajoutait à C la notion de classe (avec
encapsulation des données), de classe dérivée, de vérification des types
renforcés (typage fort), d'« inlining », et d'argument par défaut.
Comme Stroustrup développait C avec classes, il écrivit CFront, un
compilateur qui générait du code source C à partir de code source C
avec classes. La première commercialisation se fit en octobre 1985.

11
Historique (8)
En 1983, le nom du langage passa de C avec classes à celui de « C++ ».
Parmi les nouvelles fonctionnalités qui furent ajoutées au langage, il y
avait les fonctions virtuelles, la surcharge des opérateurs et des
fonctions, les références, les constantes, le contrôle du typage amélioré
et les commentaires en fin de ligne.
En 1985, la première édition de  « The C++ programming Language »,
fut publiée, apportant ainsi une référence importante au langage qui
n'avait pas encore de nom.

12
Historique (9)
En 1989, sortie de la version 2.0 de C++.

Parmi les nouvelles fonctionnalités, il y a l'héritage multiple, les classes


abstraites, les fonctions membres statiques, les fonctions membres
constantes, et les membres protégés.
En 1990, The Annotated C++ Reference Manual (« ARM ») fut publié
apportant les bases du futur standard. Les ajouts de fonctionnalités
tardifs qu'il comportait couvraient les modèles, les exceptions, les
espaces de noms, les nouvelles conversions et le type booléen.

13
Historique (10)
La bibliothèque standard évoluait de concert avec le langage C++. La
première addition à la bibliothèque standard de C++ concerne les flux
d'entrées/sorties qui fournissent les fonctionnalités nécessaires au
remplacement des fonctions C traditionnelles telles que printf et scanf.
Ensuite, parmi les additions les plus significatives, il y eut la Standard
Template Library.
Après des années de travail, un comité réunissant l'ANSI et
l'ISO standardisa C++ (ISO/CEI 14882:1998), en 1998, année où le
comité de standardisation se réunit à Sophia Antipolis dans le sud de la
France. 14
Historique (10)
Pendant quelques années après la sortie officielle du standard, le
comité traita le rapport de problèmes et, en 2003, publia une version
corrigée du standard C++.

Personne n’est propriétaire du langage C++: il est libre de droit. Le


document de standardisation, quant à lui, n’est pas disponible
gratuitement.

15
Les fonctionnalités de C++ (1)
On peut considérer que C++ « est du C » avec un ajout de
fonctionnalités. Cependant, certains programmes syntaxiquement
corrects en C ne le sont pas en C++.
Les fonctionnalités ajoutées sont :
⮚ les déclarations reconnues comme instructions (repris dans C99) ;
⮚ les opérateurs new et delete pour la gestion d'allocation mémoire ;
⮚ le type de données bool (booléen) ;
⮚ les références ;
⮚ le mot clé const pour définir des constantes (repris par C à la fin
des années 1980) ;
⮚ les fonctions inline (repris dans C99) ;
⮚ les paramètres par défaut dans les fonctions ;

16
Les fonctionnalités de C++ (2)
⮚ les référentiels lexicaux (Espace de noms) et l'opérateur de
résolution :: ;
⮚ les classes, ainsi que tout ce qui y est lié : l'héritage, les fonctions
membres, les fonctions membres virtuelles, les constructeurs et
le destructeur ;
⮚ la surcharge des opérateurs ;
⮚ les templates ;
⮚ la gestion d'exceptions ;
⮚ l'identification de type pendant l'exécution (RTTI : run-time type
information) ;

17
Les fonctionnalités de C++ (3)
⮚ le commentaire sur une ligne introduit par « // » (existant
dans BCPL, repris dans C99);
⮚ les fonctions lambda (C++11);

⮚ la compilation d'un programme en C++ effectue également un


contrôle plus minutieux sur le typage.

18
La bibliothèque standard de C+
+

19
La bibliothèque standard de C++ (1)
⚫ La bibliothèque standard du C++ (C++ Standard Library en anglais) est
une bibliothèque de classes et de fonctions standardisées selon la norme ISO pour
le langage C++. Elle fournit des outils (généralement sous la forme de patrons) tels
que :

⮚ un type pour manipuler efficacement les chaînes de caractères ;


⮚ des types pour la manipulation de flux (fichiers, entrée et sortie standard…) ;
⮚ des conteneurs qui facilitent la manipulation de plusieurs objets de même type
(avec par exemple des fonctions d'insertion ou de retrait d'éléments) ;
⮚ une collection d'algorithmes de bas niveau comme le tri.

20
La bibliothèque standard de C++ (2)
⚫ N.B: La bibliothèque standard du C++ contient aussi la bibliothèque
standard du C

⚫ Cette bibliothèque est le résultat de l'évolution de plusieurs bibliothèques --


parfois développées indépendamment par plusieurs fournisseurs
d'environnements C++ -- qui ont été fusionnées et normalisées afin de
garantir la portabilité des programmes qui les utilisent.

⚫ Une des principales briques de cette bibliothèque est sans aucun doute la
STL (abréviation de « Standard Template Library.) Meng Lee1,2.

21
La bibliothèque standard de C++ (3)
⚫ L'ensemble de la bibliothèque est spécifiée dans la norme ISO qui
définit également le langage : ISO/CEI 14882. Elle est incluse en
totalité dans l'espace de noms std (standard). Pour l’utiliser, il est
donc nécessaire de placer l'injonction :

using namespace std;

22
Les entrées/sorties standards

23
Les entrées/sorties standards
⚫ Cette section traite de l'utilisation simple des flux standard d'entrée-sortie, c'est-à-dire la
manière de faire en C++ les opérations qu'on fait habituellement en C avec les fonctions
printf et scanf.

⮚ Un programme qui utilise les flux standard d'entrée-sortie doit comporter la directive

#include <iostream.h>

⮚ ou bien, si vous utilisez un compilateur récent et que vous suivez de près les
recommandations de la norme :

#include <iostream>

using namespace std;

24
Les flux d'entrée-sortie
⚫ Les flux d'entrée-sortie sont représentés dans les programmes par les trois
variables, pré-déclarées et pré-initialisées suivantes :

⮚ cin, le flux standard d'entrée (l'équivalent du stdin de C ou scanf), qui est


habituellement associé au clavier du poste de travail,

⮚ cout, le flux standard de sortie (l'équivalent du stdout de C ou printf), qui


est habituellement associé à l'écran du poste de travail,

⮚ cerr, le flux standard pour la sortie des messages d'erreur (l'équivalent du


stderr de C), également associé à l'écran du poste de travail.

25
Ecritures et lectures
⚫ Les écritures et lectures sur ces unités ne se font pas en appelant des fonctions, mais à
l'aide des opérateurs <<, appelé opérateur d'injection (« injection » de données dans un
flux de sortie), et >>, appelé opérateur d'extraction(« extraction » de données d'un flux
d'entrée). Or, le mécanisme de la surcharge des opérateurs (voir dans les cours qui
suivent) permet la détection des types des données à lire ou à écrire. Ainsi, le
programmeur n'a pas à s'encombrer avec des spécifications de format.

⚫ La syntaxe d'une injection de données sur la sortie standard cout est :

26
La syntaxe d'une injection de données
⚫ Syntaxe : cout < < expr1 < < . . . < < exprn ;

⮚ cout (ou std::cout) désigne le “flot de sortie” standard.

⮚ < < est un opérateur binaire:

⮚ le premier opérande est cout (de type “flot de sortie”)

⮚ le second opérande est l’expression a afficher

⮚ le résultat est de type “flot de sortie’

⮚ < < est associatif de gauche à droite

⮚ < < est surchargé (ou sur-défini):

On utilise le même opérateur pour afficher des caractères, des entiers, des réels ou
des chaînes de caractères etc.
27
La lecture au clavier avec «cin »
⚫ cin permet de manipuler l'entrée standard, qui est généralement (mais pas toujours) le
clavier. C’est ce que l'on appelle un flux d'entrée, quelque chose qui permet de
manipuler les informations saisies par l'utilisateur. Lorsque l'on réalise une opération
avec (comme par exemple cin >> age; ), il extrait des informations du flux d'entrée (il
les sort du flux pour les mettre dans la variable en quelque sorte).

⚫ De plus, à chaque fois que l'on demande à cin d'extraire des données du flux, ce
dernier enregistre des informations sur son état, à savoir le succès ou l'échec de
l'opération d'extraction. Si tout s'est déroulé normalement, l'état sera bon, sinon le code
nous indiquera la où sont survenues les erreurs.

28
La lecture au clavier avec «cin »
La lecture au clavier

⚫ Syntaxe : cin>> expre1 >> . . . >> expre2 ;

Cette instruction lit (au clavier) des valeurs et les affecte à expre1 puis
expre2.

⚫ cin est le flot d'entrée standard, et > > est un opérateur similaire à <<.

Les caractères tapés au clavier sont enregistrés dans un buffer dans lequel
les cin viennent puiser des valeurs. Les espaces, les tabulations et les fins de
ligne sont des séparateurs.

29
Les types de base

30
Les types prédéfinis C++ (1)
C++ est un langage typé. Cela signifie que chaque entité manipulée dans les
programmes doit disposer d’un type de données grâce auquel le compilateur pourra
vérifier la validité des opérations qu’on lui appliquera. La prise en compte du type des
données peut apparaître comme une contrainte pour le programmeur, mais en réalité il
s’agit surtout d’une aide à la détection des erreurs.

Il existe plusieurs types prédéfinis. Ce sont:

⮚ le type vide : void. Ce type est utilisé pour spécifier le fait qu’il n’y a pas de type.
Cela a une utilité pour faire des procédures (fonctions ne renvoyant rien) et les
pointeurs sur des données non typées.

31
Les types prédéfinis C++ (2)
⮚ les booléens : bool, qui peuvent prendre les valeurs true et false

⮚ les caractères : char ; les caractères longs : wchar_t (ce n’est un type de base
que pour le langage C++, mais il est également défini dans la librairie standard
C et est donc utilisable malgré tout en C) ;

⮚ les entiers : int ;

⮚ les réels : float ;

⮚ les réels en double précision : double ;

32
Les types prédéfinis C++ (3)
⮚ Les types entiers (int) peuvent être caractérisés d’un des mots-clés long
ou short. Ces mots-clés permettent de modifier la taille du type, c’est-à-
dire la plage de valeurs qu’ils peuvent couvrir. De même, les réels en
double précision peuvent être qualifiés du mot-clé long, ce qui augmente
leur plage de valeurs.

❖ les entiers longs : long int, ou long (int est facultatif);

❖ les entiers courts : short int, ou short;

❖ les réels en quadruple précision : long double.

33
Les types prédéfinis C++ (4)
⮚ Le type char est généralement codé sur un octet (8 bits),

⮚ Le type short int sur deux octets (16 bits)

⮚ Le type long int sur quatre octets (32 bits).

Le type int est celui qui permet de stocker les entiers au format natif du processeur
utilisé. Il est donc codé sur deux octets sur les machines 16 bits et sur quatre octets
sur les machines 32 bits.

La taille des caractères de type wchar_t n’est pas spécifiée et dépend de


l’environnement de développement utilisé. Ils sont généralement codés sur deux ou
sur quatre octets suivant la représentation utilisée pour les caractères larges.

34
Note :

Remarquez que le type int est codé sur 64 bits sur les machines 64 bits. Le type long int
Les types prédéfinis C++ (5)
devant lui être supérieur, il doit également être codé sur 64 bits ou plus.

Le type short int peut quant à lui être sur 16 ou sur 32 bits. Il n’existe donc pas, sur ces
machines, de type permettant de manipuler les valeurs 16 bits si le type short int est codé
sur 32 bits, ou, inversement, de manipuler les valeurs 32 bits s’il est codé sur 16 bits.

Les types char, wchar_t et int peuvent être signés ou non. Un nombre signé peut être
négatif. Ce n’est pas le cas pour un nombre non signé. Lorsqu’un nombre est signé, la
valeur absolue du plus grand nombre représentable est plus petite. Par défaut, les nombres
entiers sont signés.

35
Les types prédéfinis C++ (6)
Note :

Le signe des types char et wchar_t dépend du compilateur utilisé, il est


donc préférable de spécifier systématiquement si ces types sont signés
ou non lorsqu’on les utilise en tant que type entier. Pour préciser qu’un
nombre n’est pas signé, il faut utiliser le mot-clé unsigned. Pour
préciser qu’un nombre est signé, on peut utiliser le mot-clé signed.

Ces mots-clés peuvent être intervertis librement avec les mots-clés long
et short pour les types entiers.

36
Types signés et non signés (1)
unsigned char signed char
unsigned wchar_t signed wchar_t

unsigned int signed int

unsigned long int long unsigned int


Les valeurs accessibles avec les nombres signés ne sont pas les mêmes que
celles accessibles avec les nombres non signés. En effet, un bit est utilisé pour
le signe dans les nombres signés2 puissance 8 combinaisons possibles, ce qui
fait 256.

37
Types signés et non signés (2)
Par exemple, si le type char est codé sur 8 bits, on peut coder les
nombres allant de 0 à 256 avec ce type en non signé (il y a 8 chiffres
binaires, chacun peut valoir 0 ou 1, on a donc 2 puissance 8
combinaisons possibles, ce qui fait 256).

38
Types signés et non signés (3)
En signé, les valeurs s’étendent de -128 à 127: un des chiffres binaires
est utilisé pour le signe, il en reste 7 pour coder le nombre, donc il reste
128 possibilités dans les positifs comme dans les négatifs. 0 est
considéré comme positif.

Le tableau de la diapositive qui suit vous donne un résumé des


différences de base avec leur plage de valeur suivant s’ils sont signés
ou non.

39
Types signés et non signés (4)
Type nombre d’octets plage de valeurs
char 1 octet -127 to 127 or 0 to 255
unsigned char 1 octet 0 to 255
signed char 1 octet -127 to 127
int 4 octets -2147483648 to 2147483647 unsigned int 4 octets
0 to 4294967295
signed int 4 octets -2147483648 to 2147483647
short int 2 octets -32768 to 32767
unsigned short int 2 octets 0 to 65,535
signed short int 2octets -32768 to 32767
long int 4 octets -2,147,483,647 to 2,147,483,647
signed long int 4 octets same as long int
unsigned long int 4 octets 0 to 4,294,967,295
float 4 octets +/- 3.4e +/- 38 (~7 digits)
double 8 octets +/- 1.7e +/- 308 (~15 digits)
long double 8 octets +/- 1.7e +/- 308 (~15 digits)
char_t 2 or 4 octets 1 wide character

40
Les commentaires

41
Les commentaires (1)

Les commentaires sont des textes explicatifs qui explicitent certaines parties
du programme. Ils ne représentent pas des instructions qui seront prises en
compte lors de la compilation. Ils sont nécessaires et très simples à faire. Tout
programme doit être commenté. Attention ! Cependant, trop de
commentaires tuent le commentaire, parce que les choses importantes
peuvent noyées dans les banalités.
Il existe deux façons de faire des commentaires en C++
⮚ les commentaires de type C
⮚ les commentaires de fin de ligne.

42
Les commentaires (2)
⮚ Les commentaires de type C
Les commentaires C commencent avec la séquence barre oblique – étoile et se
terminent avec la séquence inverse : une étoile suivie d’une barre oblique.
Exemple
/* Ceci est un commentaire C */
Ces commentaires peuvent s’étendre sur plusieurs lignes. En revanche, les
commentaires de fin de ligne s’arrêtent à la fin de la ligne courante, et pas avant.
Ils permettent de commenter plus facilement les actions effectuées sur la ligne
concernée, avant le commentaire.

43
Les commentaires (3)
⮚ Les commentaires de fin de ligne.

Les commentaires de fin de ligne commencent par la séquence


constituée de deux barres obliques (ils n’ont pas de séquence de
terminaison puisqu’ils ne se terminent qu’à la fin de la ligne courante).
Exemple
action quelconque // Ceci est un commentaire C++

action suivante

44
Les Opérateurs

45
Les opérateurs
Les opérateurs sont des symboles qui permettent de manipuler des
variables, c'est-à-dire d’effectuer des opérations, de les évaluer, etc .

Les opérateurs de C++ sont presque les mêmes que ceux du langage C.

46
Opérateur d’Affectation
Il est symbolisé par : =

<Destination> = <Source>; Où <Source> et <Destination> doivent être de


même nature et où <Source> est une expression et <Destination> une
variable.

int x,y;
x = 5; //on affecte 5 a la variable x
y = 2; //on affecte 2 a la variable y
x = y; //on affecte la valeur de la variable y a x

47
L'opérateur d'affectation additionneur
(opérateur assignation)
Il est symbolisé par : +=
<Destination> += <Source>; Où <Source> et <Destination> doivent être
de même nature et où <Source> est une expression et <Destination>
une variable ;
int x,y;
x = 5; //on affecte 5 a la variable x
y = 2; //on affecte 2 a la variable y
x + = y; // x vaut la valeur 7

48
L'opérateur d'affectation soustracteur
(opérateur assignation)
Il est symbolise par : -=
<Destination> - = <Source>; Où <Source> et <Destination> doivent être
de même nature et où <Source> est une expression et <Destination>
une variable ;
int x,y;
x =5; //on affecte 5 a la variable x
y =2; //on affecte 2 a la variable y
x - = y; // x vaut la valeur 3

49
L'opérateur d'affectation multiplicateur
(opérateur assignation)
Il est symbolisé par : *=
<Destination> *= <Source>; Où <Source> et <Destination> doivent être
de même nature et où <Source> est une expression et <Destination>
une variable ;
int x,y;
x = 5; //on affecte 5 a la variable x
y = 2; //on affecte 2 a la variable y
x * = y; // x vaut la valeur 10

50
L'opérateur d'affectation modulo (opérateur
d’assignation)

Il est symbolisé par : %=

<Destination> %= <Source>; Où <Source> et <Destination> doivent être


de même nature et où <Source> est une expression et <Destination>
une variable ;
int x,y;
x = 5; //on affecte 5 a la variable x
y = 2; //on affecte 2 a la variable y
x %= y; // x vaut la valeur 1

51
Les opérateurs de calcul
Le tableau ci-dessous va vous présenter les différents opérateurs de
calcul avec un exemple pour chaque opérateur.

52
Les opérateurs logiques (booléens)
Ce type d'opérateur permet d’évaluer plusieurs conditions en même
temps:

53
Les opérateurs d'incrémentation
opérateurs d’incrémentation /décrémentation
Ce type d'opérateur permet facilement d’augmenter ou de diminuer une variable
d'une unité. Ces opérateurs sont très utiles pour des structures telles que des boucles,
qui ont besoin d'un compteur (variable qui augmente de un en un).

Un opérateur de type x++ permet de remplacer des notations lourdes telles que


x=x+1 ou bien x+=1. opérate Dénominatio Syntax Résultat (avec x valant
Effet
ur n e 10)
Incrémentatio Augmente d'une
++ x++ 11
n unité la variable
Décrémentati Diminue d'une unité
-- x-- 9
on la variable

54
La fonction main (1)
Le point d'entrée d’un programme en C++ est la fonction main(). La
fonction main renvoie au système d’exploitation un entier pour
signaler si elle a été menée à bien. La valeur de cet entier est 0 le
programme se termine correctement et une autre valeur entière si le
programme termine de manière inadaptée.
Le prototype de la fonction: int main()
La fonction main doit être de type entier.

55
La fonction main (2)
Façon de lancer un programme
Un programme peut être lancé de différentes manières:
1. Directement, en lançant l'exécutable : dans ce cas, il n’y pas d’argument
à passer à la fonction main.
2. Créer un raccourci ou lancer la "ligne de commande" (menu démarrer,
ensuite, accessoires et puis ligne de commandes) pour se rendre dans
le dossier contenant l’exécutable, et introduire le nom de ce dernier
suivi de la touche <enter> .

56
La fonction main (3)
Façon de lancer un programme

Dans ces deux derniers cas (c’est-à-dire le raccourci ou la ligne de commande), nous
pourrions envisager de passer un certain nombre d'arguments au programme :
c'est, par exemple, ce qui se passe avec la commande dir :

⮚ dir toute seule liste le contenu du dossier en cours.

⮚ dir c:\mon_dossier fonctionnera tout aussi bien (c:\mon_dossier est un


argument passé qui fera que c'est le contenu de mon_dossier qui sera listé).

57
La fonction main (4)
Les paramètres de la fonction main
Les paramètres de la ligne de commande peuvent être récupérés par la
fonction main d’un programme C++. Si on souhaite les récupérer, la
fonction main doit attendre deux paramètres :
⮚ le nombre d'arguments, et
⮚ la valeur des arguments. Le prototype de la fonction main devient
alors : int main( int argc, char *argv[]) où :
⮚ argc : est un entier et contient le nombre d'arguments

58
La fonction main (5)
Les paramètres de la fonction main
⮚ argv : est un tableau de pointeurs de caractères, et contient les
valeurs des différents arguments fournis. Cela permet alors de
récupérer les lignes de commande.
Reprenons l’exemple de la commande dir :
1. si nous avons juste dir : argc= 0 argv[]=NULL

2. si nous avons dir c:\mon_dossier: argc=1 argv[0]="c:\mon_dossier"

59
La fonction main (6)
Les paramètres de la fonction main
Par exemple, si on utilise le compilateur gcc, on pourra l’utiliser sous la
forme :
gcc fichier.cpp //argc=1 argv[0]="fichier.cpp": compile le fichier
nommé fichier.cpp, au nom (par défaut) de fichier.o
gcc fichier.cpp -o monfichier.o //argc=3 argv[0]="fichier.cpp"
argv[1]="-o" argv[2]="monfichier.o":
compile fichier.cpp mais on dit ("-o") que l'on donne un autre nom au
fichier binaire ("monfichier.o")

60
La fonction main (7)

Les paramètres de la fonction main


Cela est possible simplement parce la fonction main a été créée sous la
forme suivante :

int main( int argc, char *argv[]) {


/* vérifier le nombre et la valeur des arguments*/
int i; // afficher le nom du programme

cout << "Nom du programme : " << argv[0]<< endl;

61
La fonction main (8)
for(i=1;i<argc ; ++i)
{
cout << argv[i];
cout << endl;
}
return 0; // tout s’est bien passé
}

62
Prochain Chapitre: Les
instructions de contrôle

63

Vous aimerez peut-être aussi