Maison > développement back-end > C++ > le corps du texte

Qu'est-ce que Calloc en langage C ?

王林
Libérer: 2023-09-10 19:45:02
avant
1787 Les gens l'ont consulté

La fonction d'allocation de mémoire de la bibliothèque C void *calloc(size_t nitems, size_t size) alloue la mémoire demandée et renvoie un pointeur vers celle-ci.

La différence entre malloc et calloc est que malloc ne met pas la mémoire à zéro, tandis que calloc définit la mémoire allouée à zéro.

Fonction d'allocation de mémoire

La mémoire peut être allouée de deux manières comme décrit ci-dessous -

Une fois la mémoire allouée au moment de la compilation, elle ne peut pas être modifiée pendant l'exécution. Il y aura des problèmes de mémoire insuffisante ou gaspillée.

La solution est de créer de la mémoire de manière dynamique, c'est-à-dire de créer de la mémoire en fonction des besoins de l'utilisateur lors de l'exécution du programme.

Les fonctions standard de la bibliothèque pour la gestion dynamique de la mémoire sont les suivantes : -

  • malloc ( )
  • calloc ( )
  • realloc ( )
  • free ( )

Calloc ( )fonction

  • Cette fonction est utilisé Allouer des blocs de mémoire contigus au moment de l'exécution.

  • Ceci est spécialement conçu pour les tableaux.

  • Il renvoie un pointeur vide qui pointe vers l'adresse de base de la mémoire allouée. La syntaxe de la fonction

calloc() est la suivante -

void *calloc ( numbers of elements, size in bytes)
Copier après la connexion

Exemple

L'exemple suivant montre l'utilisation de la fonction calloc().

int *ptr;
ptr = (int * ) calloc (500,2);
Copier après la connexion

Ici, 500 blocs mémoire de taille 2 octets seront alloués consécutivement. Mémoire totale allouée = 1 000 octets.

Quest-ce que Calloc en langage C ?< /p>

int *ptr;
ptr = (int * ) calloc (n, sizeof (int));
Copier après la connexion

Exemple de programme

Vous trouverez ci-dessous un programme C qui utilise la fonction d'allocation dynamique de mémoire Calloc pour calculer la somme des nombres pairs et impairs dans un ensemble d'éléments.

Démonstration en ligne

#include<stdio.h>
#include<stdlib.h>
void main(){
   //Declaring variables, pointers//
   int i,n;
   int *p;
   int even=0,odd=0;
   //Declaring base address p using Calloc//
   p = (int * ) calloc (n, sizeof (int));
   //Reading number of elements//
   printf("Enter the number of elements : ");
   scanf("%d",&n);
   /*Printing O/p -
   We have to use if statement because we have to check if memory
   has been successfully allocated/reserved or not*/
   if (p==NULL){
      printf("Memory not available");
      exit(0);
   }
   //Storing elements into location using for loop//
   printf("The elements are : </p><p>");
   for(i=0;i<n;i++){
      scanf("%d",p+i);
   }
   for(i=0;i<n;i++){
      if(*(p+i)%2==0){
         even=even+*(p+i);
      } else {
         odd=odd+*(p+i);
      }
   }
   printf("The sum of even numbers is : %d</p><p>",even);
   printf("The sum of odd numbers is : %d</p><p>",odd);
}
Copier après la connexion

Sortie

Lorsque le programme ci-dessus est exécuté, les résultats suivants seront produits -

Enter the number of elements : 4
The elements are :
12
56
23
10
The sum of even numbers is : 78
The sum of odd numbers is : 23
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal