Foire aux questions sur la programmation en C - FAQ 2
- Faites la distinction entre l'allocation de mémoire malloc () et calloc ().
- Que signifie mot clé auto?
- Quels sont les emplacements valides pour que le mot clé break apparaisse?
- Quelle est la différence entre l’inclusion du fichier d’en-tête avec < > et les guillemets doubles ""
- Quel est le but du spécificateur de stockage extern ?
- Quelle est la signification de l'adresse de base du tableau?
- Quand devrions-nous utiliser le spécificateur de stockage de registre?
- Quel est le but du mot-clé typedef?
- Quelle est la différence entre les paramètres réels et formels?
- Un programme peut-il être compilé sans la fonction main ()?
Faites la distinction entre l'allocation de mémoire malloc () et calloc ().
Il existe deux différences majeures entre malloc et calloc en langage de programmation C: premièrement, en nombre d'arguments. Le malloc() prend un seul argument, alors que calloc() en prend deux. Deuxièmement, malloc() n'initialise pas la mémoire allouée, alors que calloc () initialise la mémoire allouée à ZERO.
malloc et calloc sont toutes les deux utilisées en langage C pour l'allocation dynamique de mémoire. Elles obtiennent des blocs de mémoire de manière dynamique (Zone de Tas).
L'allocation dynamique de mémoire est une caractéristique unique du langage C qui nous permet de créer des types de données et des structures de toutes tailles et de toutes longueurs adaptées à nos programmes.
Que signifie mot clé auto?
Par défaut, chaque variable locale de la fonction est automatique (auto).
Les variables automatiques ne sont accessibles qu’au sein du bloc / de la fonction où elles ont été déclarées et non en dehors de celles-ci. Dans la fonction ci-dessous, les variables "i" et "j" sont des variables automatiques.
void f() { int i; auto int j; }
Quels sont les emplacements valides pour que le mot clé break apparaisse?
Break peut uniquement apparaître avec dans le contrôle de boucle et l’instruction switch. Le but de break est de sortir le contrôle du bloc.
Quelle est la différence entre l’inclusion du fichier d’en-tête avec < > et les guillemets doubles ""
Si un fichier d'en-tête est inclus dans < >, le compilateur recherche le fichier d'en-tête particulier uniquement dans le chemin d'inclusion intégré.
Si un fichier d'en-tête est inclus dans "", le compilateur recherche d'abord le fichier d'en-tête particulier dans le répertoire de travail en cours, s'il n'est pas trouvé, il recherche dans le chemin d'inclusion intégré.
Quel est le but du spécificateur de stockage extern ?
Les variables externes sont également appelées variables globales. Ces variables sont définies en dehors de la fonction. Ces variables sont disponibles globalement tout au long de l'exécution de la fonction. La valeur des variables globales peut être modifiée par les fonctions. Le mot-clé "extern" est utilisé pour déclarer et définir les variables externes.
#include < stdio.h> extern int x = 32; int b = 8; int main() { auto int a = 28; extern int b; printf("La valeur de la variable auto : %d\n", a); printf("La valeur des variables externes x et b : %d,%d\n",x,b); x = 15; printf("La valeur de la variable extern modifiée x : %d\n",x); return 0; }
La valeur des variables externes x et b : 32,8
La valeur de la variable extern modifiée x : 15
Quelle est la signification de l'adresse de base du tableau?
L'adresse de départ du tableau s'appelle l'adresse de base du tableau.
Quand devrions-nous utiliser le spécificateur de stockage register?
Cette classe de stockage déclare les variables de registre qui ont les mêmes fonctionnalités que celles des variables automatiques. La seule différence est que le compilateur essaie de stocker ces variables dans le registre du microprocesseur si un registre libre est disponible.
Cela rend l'utilisation des variables de registre beaucoup plus rapide que celle des variables stockées dans la mémoire pendant l'exécution du programme. Si un registre libre n'est pas disponible, ceux-ci ne sont alors enregistrés que dans la mémoire. Généralement, peu de variables qui doivent être utilisées très fréquemment dans un programme sont déclarées avec le mot clé register, ce qui améliore la durée d'exécution du programme. Un point important et intéressant à noter ici est que nous ne pouvons pas obtenir l'adresse d'une variable de registre à l'aide de pointeurs.
Quel est le but du mot-clé typedef?
Le langage de programmation C fournit un mot clé appelé typedef, que vous pouvez utiliser pour attribuer un nouveau nom à un type.
Exemple 1 :
#include < stdio.h> typedef unsigned char Octet; int main( ) { Octet o1, o2; return 0; }
Exemple 2 :
#include < stdio.h> #include < string.h> typedef struct etd { char nom[50]; int age; } Etudiant; int main( ) { Etudiant et1; // manipulation return 0; }
Quelle est la différence entre les paramètres réels et formels?
Paramètres réels
Les paramètres qui sont mentionnés dans l'appel de fonction sont appelés paramètres réels. Par exemple:
func1(12, 23);
ici 12 et 23 sont des paramètres réels.
Les paramètres réels peuvent être constants, variables, expressions, etc.
func1(a, b); func1(a + b, b - a);
Paramètres formels
Les paramètres mentionnés dans la définition de la fonction sont appelés paramètres formels. Les paramètres formels ressemblent beaucoup aux variables locales de la fonction. Tout comme les variables locales, les paramètres formels sont détruits à la fin de la fonction.
int factoriel(int n) { // traitements }
Ici n est le paramètre formel.
Un programme peut-il être compilé sans la fonction main() ?
Oui, il peut l'être, mais ne peut pas être exécuté, car l'exécution nécessite la définition de la fonction main().