Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,851 questions

51,772 answers

573 users

How to dynamically allocate multidimensional array in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>

#define ROWS 4
#define COLS 5

void setData(int **array) {
	for (int i = 0; i < ROWS; i++) {
		for (int j = 0; j < COLS; j++) {
			array[i][j] = (i + 1) * (j + 1);
		}
	}
}

void print(int **array) {
	for (int i = 0; i < ROWS; i++) {
		for (int j = 0; j < COLS; j++) {
			printf("%3d", array[i][j]);
		}
		printf("\n");
	}
}

void freeArrays(int **array) {
	for (int i = 0; i < ROWS; i++) {
		free(array[i]);
	}
	free(array);
}

void allocateArrays(int **array) {
	for (int i = 0; i < ROWS; i++) {
		array[i] = malloc(COLS * sizeof(int));
		if (array[i] == NULL) {
			printf("out of memory\n");
			exit(1);
		}
	}
}

int main(void) {
    int **array = NULL;
    
	array = malloc(ROWS * sizeof(int *));
	if (array == NULL) {
		printf("out of memory\n");
		exit(1);
	}
    
	allocateArrays(array);
	setData(array);
	print(array);
	freeArrays(array);
    
}



/*
run:

  1  2  3  4  5
  2  4  6  8 10
  3  6  9 12 15
  4  8 12 16 20
  
*/
   

 



answered Apr 29, 2020 by avibootz

Related questions

2 answers 173 views
2 answers 170 views
1 answer 136 views
136 views asked Dec 28, 2020 by avibootz
1 answer 207 views
...