Calloc in C
0 1088
calloc stands for "contiguous allocation."
It is a memory allocation function in C used to allocate a specified number of blocks of memory, each of a specified size.
Unlike malloc, calloc initializes the allocated memory to zero.
This makes it particularly useful for initializing arrays and structures.
Syntax of calloc in C:
Programs Using calloc: Program to Allocate and Print Array Using calloc
Key Features
Memory initialization: unlike malloc, calloc initializes the allocated memory to zero. Size Calculation: It takes two arguments - the number of elements and the size of each element, automatically calculating the total memory required. Return Type: Returns a pointer to the first byte of the allocated memory block. The calloc function is used to allocate memory for an array of elements.Syntax of calloc in C:
ptr = (castType*) calloc(n, size);ptr: Pointer to the block of memory. castType: Type of data to be allocated. n: Number of elements. size: Size of each element. calloc initializes the allocated memory to zero. calloc gives back a pointer to the starting point of the allocated memory.
Programs Using calloc: Program to Allocate and Print Array Using calloc
// Program to Allocate and print Array using calloc. #include<stdio.h>Output:#include<stdlib.h> int main() { int *arr; int n, i; printf("Enter number of elements: "); scanf("%d", &n); arr = (int*) calloc(n, sizeof(int)); if(arr == NULL) { printf("Memory allocation failed\n"); return 1; } printf("Enter %d elements:\n", n); for(i = 0; i < n; i++) { scanf("%d", &arr[i]); } printf("Elements in array are:\n"); for(i = 0; i < n; i++) { printf("%d\n", arr[i]); } free(arr); return 0; }
Enter number of elements: 2 Enter 2 elements: 3 5 Elements in array are: 3 5Program to Allocate 2D Array Using calloc
#include<stdio.h>Output:#include<stdlib.h> int main() { int **matrix; int rows, cols, i, j; printf("Enter number of rows: "); scanf("%d", &rows); printf("Enter number of columns: "); scanf("%d", &cols); matrix = (int**) calloc(rows, sizeof(int*)); for(i = 0; i < rows; i++) { matrix[i] = (int*) calloc(cols, sizeof(int)); } printf("Enter elements of the matrix:\n"); for(i = 0; i < rows; i++) { for(j = 0; j < cols; j++) { scanf("%d", &matrix[i][j]); } } printf("Matrix is:\n"); for(i = 0; i < rows; i++) { for(j = 0; j < cols; j++) { printf("%d ", matrix[i][j]); } printf("\n"); } // Free memory for(i = 0; i < rows; i++) { free(matrix[i]); } free(matrix); return 0; }
Enter number of rows: 3 Enter number of columns: 2 Enter elements of the matrix: 2 4 2 5 5 6 Matrix is: 2 4 2 5 5 6Program to Allocate and Initialize Memory Using calloc
#include<stdio.h>Output:#include<stdlib.h> int main() { int *arr; int n, i; printf("Enter number of elements: "); scanf("%d", &n); arr = (int*) calloc(n, sizeof(int)); if(arr == NULL) { printf("Memory allocation failed\n"); return 1; } // Initialize array elements for(i = 0; i < n; i++) { arr[i] = i + 1; } printf("Elements in array are:\n"); for(i = 0; i < n; i++) { printf("%d\n", arr[i]); } free(arr); return 0; }
Enter number of elements: 3 Elements in array are: 1 2 3In these programs: Memory is allocated using calloc. Arrays are initialized either by user input or sequentially. Memory is freed using free after its use to prevent memory leaks.
Share:




Comments
Waiting for your comments