Bonjour a tous !

voici un programme en plusieurs fichiers qui me fait une division

voici main_divi.c
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
#include <stdio.h>
#include <stdlib.h>
#include "main_divi.h"
#include "divi.h"
 
char *argv0;
 
static void
usage(void)
{
	fprintf(stderr, "Usage : %s réel réel\n", argv0);
	exit(EXIT_FAILURE);
}
 
int
main(int argc, char *argv[])
{
	argv0 = argv[0];
	if(argc < 3 )
	usage();
 
	float f1 = atof(argv[1]);
	float f2 = atof(argv[2]);
 
	printf("%g / %g = %g\n", f1, f2, division(f1, f2));
 
	return EXIT_SUCCESS;
}
main_divi.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#ifndef MAIN_DIVI_H
#define MAIN_DIVI_H
 
extern char *argv0;
 
#endif /* MAIN_DIVI_H*/
divi.c

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
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
#include <math.h>   
#include "divi.h"
#include "main_divi.h"
 
float
division(float numerateur, float denominateur)
{
	if (fabs(denominateur) <= FLT_MIN)
	{
		fprintf(stderr, "%s: division par zéro\n", argv0);
		exit(EXIT_FAILURE);
	}
	return numerateur/denominateur;
}
et divi.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#ifndef DIVI_H
#define DIVI_H
 
extern float division(float numerateur, float denominateur);
 
#endif /*DIVI_H */
a quoi sert la declaration char *argv0 dans le main_divi.c
a quoi sert argv0 = argv[0]; dans le main_divi.c
et la declaration : extern char *argv0; dans le main_divi.h

de maniere generale je ne comprends pas ce char *argv0, est-ce un pointeur ?

Merci