Spread the love
Write C code to dynamically allocate one, two and three dimensional arrays (using malloc())
Its pretty simple to do this in the C language if you know how to use C pointers. Here are some example C code snipptes….
One dimensional array
#include <stdio.h> #include <stdlib.h> int main() { int i, count = 0, no_of_elements=5; // Allocating dynamic array int *array = malloc(no_of_elements * sizeof(int)); // Accessing one dimensional array for (i = 0; i<no_of_elements; i++) array[i] = ++count; // OR *(arr+i) = ++count for (i = 0; i < no_of_elements; i++) printf("%d ", array[i]); return 0; }
Two dimensional array
There are more than one methods to allocate two dimensional array dynamically but we use only pointer method.
#include <stdio.h> #include <stdlib.h> #define ROW 3 #define COLUMN 4 int main() { int i, j, count=0; // Allocating two dimensional dynamic array int **arr = (int **)malloc(ROW * sizeof(int *)); for (i=0; i<ROW; i++) arr[i] = (int *)malloc(COLUMN * sizeof(int)); // Accessing two dimensional array for (i = 0; i < ROW; i++) { for (j = 0; j < COLUMN; j++) { arr[i][j] = ++count; // OR *(*(arr+i)+j) = ++count printf("%d ", arr[i][j]); } } return 0; }
Three dimensional array
#include<stdio.h> #include<malloc.h> #define AXIS_X 3 #define AXIS_Y 4 #define AXIS_Z 5 int main() { int ***p,i,j,k,count=0; // Allocating three dimensional dynamic array p=(int ***) malloc(AXIS_X * sizeof(int ***)); for(i=0; i<AXIS_X; i++) { p[i]=(int **)malloc(AXIS_Y * sizeof(int *)); for(j=0; j<AXIS_Y; j++) { p[i][j]=(int *)malloc(AXIS_Z * sizeof(int)); } } // Accessing three dimensional array for(k=0; k<AXIS_Z; k++) { for(i=0; i<AXIS_X; i++) { for(j=0; j<AXIS_Y; j++) { *(*(*(p+i)+j)+k)= ++count; // OR *(*(*(p+i)+j)+k) = ++count printf("%d ",p[i][j][k]); } } } return 0; }