aliceangel
aliceangel

Reputation: 314

C - multidimensional array memory allocation based on user input

I have seen the following declaration of two dimensional array.

  int arr[][3] = { {1,2,3}, {4,5,6}};

My question is how can I allocate following multidimensional array in run time based on user input of first dimension?

   #define M 10
   #define N 15

   int arr[][M][N]

Upvotes: 1

Views: 117

Answers (2)

Barmar
Barmar

Reputation: 782285

C allows variable-length arrays. So after reading the first dimension from the user, you can declare the array with that size.

int n;
printf("How big is it? ");
scanf("%d", &n);
int arr[n][M][N];

Upvotes: 0

user3386109
user3386109

Reputation: 34839

Start by declaring a pointer suitable for accessing the array:

int (*array)[M][N];

Then allocate memory for the array based on the user input:

array = malloc(P * sizeof(*array));    // P is the value obtained from the user

Then use the pointer as if it was a 3D array:

array[x][y][z] = 42;

Don't forget to free the memory when you're done with it.

Upvotes: 3

Related Questions