Top 50 Questions d’Entretien en Langage C – Partie 2

Questions d’Entretien sur le langage C avec des réponses pour la préparation des entretiens d’embauche, tests en ligne, examens et certifications. Ces questions et réponses sur le langage C comprennent divers sujets tel que les bases du langage C, les boucles, les fonctions, les tableaux, les pointeurs, les structures des données, etc… Et sont tirés d’un vrai entretien écrit et certaines parties sont en direct. Cette méthode d’apprentissage systématique préparera facilement toute personne pour réussir son test sur le langage C.
 
 

1. Quelle est la différence entre le compilateur et l’interpréteur?
Le compilateur est utilisé dans le langage C et il traduit le code complet en code machine en une seule fois. Par contre, l’interpréteur est utilisé dans le langage de programmation Java et d’autres langages de programmation sophistiqués. Il est conçu pour compiler le code ligne par ligne.
Différence entre compilateur et interpréteur

 

 
 

2. Puis-je utiliser le type « int » pour stocker la valeur 32768 ?
Non, le type de données Integer prend en charge la plage comprise entre -32768 et 32767. Toute valeur dépassant cette plage ne sera pas stockée. Nous pouvons utiliser soit float, soit long int.
Les types de données

 

 
 

3. Comment déclarer une fonction en langage C ?
Exemple: Une fonction en langage C est déclarée comme suit,

void somme(int a, int b)
{
       return a + b;
}
Les fonctions

 

 
 

4. Qu’est-ce que l’allocation de mémoire dynamique ? Indiquez des exemples.
L’allocation dynamique de mémoire est le processus d’allocation de mémoire au programme et à ses variables en cours d’exécution. Le processus d’allocation dynamique de mémoire implique trois fonctions pour allouer de la mémoire et une fonction pour libérer la mémoire utilisée.


malloc()

Exemple: malloc() => « memory allocation » – est utilisée pour allouer dynamiquement un seul grand bloc de mémoire avec la taille spécifiée.

ptr = (float*) malloc(100 * sizeof(float));

L’instruction ci-dessus alloue 400 octets de mémoire. C’est parce que la taille de float est de 4 octets. Et, le pointeur ptr contient l’adresse du premier octet dans la mémoire allouée.


calloc()

Exemple: calloc() => « contiguous allocation » – est utilisée pour allouer dynamiquement le nombre spécifié de blocs de mémoire du type spécifié. Elle est très similaire à malloc() mais présente deux points différents :

  • Elle initialise chaque bloc avec une valeur par défaut ‘0’.
  • Il a deux paramètres ou arguments par rapport à malloc().
ptr = (float*) calloc(25, sizeof(float));

L’instruction ci-dessus alloue un espace contigu en mémoire pour 25 éléments de type float.


realloc()

Exemple: realloc() => « re-allocation » – est utilisé pour modifier dynamiquement l’allocation de mémoire d’une mémoire précédemment allouée. En d’autres termes, si la mémoire précédemment allouée à l’aide de malloc ou calloc est insuffisante, realloc peut être utilisé pour réallouer dynamiquement la mémoire. La réallocation de la mémoire garde la valeur déjà présente et les nouveaux blocs seront initialisés avec la valeur par défaut du garbage.

ptr = realloc(ptr, x);

Ici, ptr est réaffecté avec une nouvelle taille x.


free()

Exemple: free() est utilisé pour libérer dynamiquement la mémoire.

free(ptr);

Cette instruction libère l’espace alloué dans la mémoire pointée par ptr.
Différence entre calloc et malloc en C

 

 
 

5. Où on peut pas utiliser l’opérateur d’adresse & en C?
On ne peut pas utiliser & sur les constantes et sur une variable qui est déclarée en utilisant la classe de stockage des registres.

 

 
 

6. Qu’est-ce qu’un pointeur en C ?
Un pointeur est une variable qui stocke ou pointe vers l’adresse d’une autre variable. La valeur d’une variable est stockée dans une variable normale, tandis que l’adresse d’une variable est stockée dans une variable pointeur.
 

Les pointeurs

 

 
 

7. Différence entre const char* p et char const* p ?
  • const char* p est un pointeur sur un const char.
  • char const* p est un pointeur sur un char const.

Puisque ‘const char’ et ‘char const’ sont identiques, c’est la même chose.

 

 
 

8. Qu’est-ce qu’un pointeur de pointeur en C ?
En C, un pointeur peut également être utilisé pour stocker l’adresse d’un autre pointeur. L’adresse d’une variable est stockée dans le premier pointeur, tandis que l’adresse du premier pointeur est stockée dans le deuxième pointeur.

La syntaxe de déclaration d’un pointeur de pointeur est comme suit :

int **p; // pointeur de pointeur sur un entier


Exemple:

#include <stdio.h>

void main ()
{  
    int num = 255;  
    int *ptr2;  
    int **ptr1;   
    ptr2 = &num; //le pointeur ptr2 pointe vers l'adresse de num
    ptr1 = &ptr2; //ptr1 est un pointeur de pointeur pointant vers l'adresse du ptr2 
    printf("Adresse de num: %x\n",ptr2); //L'adresse du num sera affichée: 88A123X2  
    printf("Adresse de ptr2: %x\n",ptr1); //L'adresse de ptr2 sera affichée: 55X456X1  
    printf("Valeur stockée dans ptr2: %d\n",*ptr2); //La valeur stockée à l'adresse contenue dans ptr2, c'est-à-dire 255, sera affichée.  
    printf("Valeur stockée dans ptr1: %d\n",**ptr1); //La valeur stockée à l'adresse contenue par le pointeur stocké dans ptr1, c'est-à-dire 255, sera affichée.   
}

 

 

 
 

9. À quoi sert la conversion de types en C?
La conversion de type est le processus de conversion d’une variable d’un type de données à un autre. Si nous voulons stocker une grand valeur dans un type int, nous allons convertir le type de données en un autre type de données de manière explicite.
Syntaxe: (data_type)expression;
Exemple:

int x = 98;
printf("%c", (char)x); /* Conversion explicite de int à char */

 

 
 

10. Que signifie « Enumération » ?
Une énumération, également appelée Enum en C, est un type de données défini par l’utilisateur. Il est principalement utilisé pour attribuer des noms aux constantes entières, les noms rendent un programme facile à lire et à maintenir. Exemple:

enum State {Working = 1, Failed = 0};

 

 

Une réflexion sur “Top 50 Questions d’Entretien en Langage C – Partie 2

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *