Il est possible de créer un nouveau fichier d’en-tête. Créez un fichier contenant les prototypes des fonctions qui doivent être utilisées dans le programme. Incluez le fichier dans la section ‘#include’ dans son nom. Par exemple, j’appelle une fonction externe appelée swap dans mon fichier main.c.
#include <stdio.h>
#include "swap.h"
void main()
{
int a=10;
int b=20;
swap(&a,&b);
printf("a=%d\n", a);
printf("b=%d\n",b);
}
#include <stdio.h>
#include "swap.h"
void main()
{
int a=10;
int b=20;
swap(&a,&b);
printf("a=%d\n", a);
printf("b=%d\n",b);
}
La méthode swap, définie dans le fichier swap.h, est utilisée pour échanger deux nombres à l’aide d’une variable temporaire.
void swap(int* a, int* b)
void swap(int* a, int* b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void swap(int* a, int* b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
Une variable statique locale est une variable dont la vie ne se termine pas avec l’appel de fonction où elle est déclarée. Elle s’étend sur toute la durée de vie du programme complet. Tous les appels à la fonction partagent la même copie des variables statiques locales. Exemple:
#include <stdio.h>
void incr()
{
static int i;
printf("%d ", i);
i = i + 1;
}
int main()
{
incr();
incr();
return 0;
}
#include <stdio.h>
void incr()
{
static int i;
printf("%d ", i);
i = i + 1;
}
int main()
{
incr();
incr();
return 0;
}
Sortie:
0 1
La différence entre les deux réside dans l’emplacement où le préprocesseur recherche le fichier à inclure dans le code.
#include <filename> // En-tête de la bibliothèque standard
#include "filename" // En-tête défini par l'utilisateur
#include <filename> // En-tête de la bibliothèque standard
#include "filename" // En-tête défini par l'utilisateur
#include <filename> // En-tête de la bibliothèque standard
#include "filename" // En-tête défini par l'utilisateur
Si le fichier d’en-tête est déclaré en utilisant < >
, le compilateur recherche le fichier d’en-tête dans le chemin intégré. Si le fichier d’en-tête est déclaré en utilisant " "
, le compilateur recherche le fichier d’en-tête dans le répertoire de travail actuel et, s’il ne le trouve pas, il le recherche dans d’autres emplacements.
Oui, le même nom de variable peut être déclaré à des variables ayant des portées différentes comme dans l’exemple suivant.
void function()
{
int nbr;
}
int main()
{
int nbr;
}
void function()
{
int nbr;
}
int main()
{
int nbr;
}
L’opérateur de flèche (->) peut être utilisé pour accéder aux membres de données d’une union si la variable d’union est déclarée comme une variable pointeur. Exemple:
B = (union Book*) malloc(sizeof(union Book));
printf("\n ID: %d", B->id);
printf("\n Price: %.1f", B->price);
#include <stdio.h>
union Book
{
int id;
float price;
};
int main()
{
union Book * B;
B = (union Book*) malloc(sizeof(union Book));
B->id = 101;
printf("\n ID: %d", B->id);
B->price = 25.66;
printf("\n Price: %.1f", B->price);
return 0;
}
#include <stdio.h>
union Book
{
int id;
float price;
};
int main()
{
union Book * B;
B = (union Book*) malloc(sizeof(union Book));
B->id = 101;
printf("\n ID: %d", B->id);
B->price = 25.66;
printf("\n Price: %.1f", B->price);
return 0;
}
Sortie:
ID: 101
Price: 25.66
if(printf("Hello World!")){}
#include <stdio.h>
void main()
{
if(printf("Hello World!")){}
}
#include <stdio.h>
void main()
{
if(printf("Hello World!")){}
}
printf("Avant la permutation a=%d b=%d",a,b);
printf("Aprés la permutation a=%d b=%d",a,b);
#include <stdio.h>
#include <conio.h>
main()
{
int a=20, b=30;
clrscr();
printf("Avant la permutation a=%d b=%d",a,b);
a=a+b;
b=a-b;
a=a-b;
printf("Aprés la permutation a=%d b=%d",a,b);
getch();
}
#include <stdio.h>
#include <conio.h>
main()
{
int a=20, b=30;
clrscr();
printf("Avant la permutation a=%d b=%d",a,b);
a=a+b;
b=a-b;
a=a-b;
printf("Aprés la permutation a=%d b=%d",a,b);
getch();
}
Sortie:
Avant la permutation a=20 b=30
Aprés la permutation a=30 b=20
Il n’existe pas de séquence d’échappement pour le symbole % en C. Ainsi, pour afficher %, nous devons utiliser ‘%%’ comme indiqué ci-dessous.
printf("100%% fonctionnelle!");
printf("100%% fonctionnelle!");
printf("100%% fonctionnelle!");
Sortie:
100% fonctionnelle!