the code shows below:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define max(a,b) ((a)>(b)?(a):(b))
#define min_range 1
#define max_range 20

void init(int **a, int *n)
{
	int i, j;
	FILE *f;
	srand(time(NULL));
	printf("n = ");
	scanf("%d", n);
	a = (int**)malloc((*n)*sizeof(int*));
	for (i = 0; i < *n; i++)
		a[i] = (int*)malloc((*n)*sizeof(int));
	f = fopen("FindMaxValue.dat", "w");
	fprintf(f, "%d\n", *n);
	for (i = 0; i < *n; i++) {
		for (j = 0; j < *n; j++) {
			a[i][j] = rand()%(max_range-min_range+1)+min_range;	
			fprintf(f, "%d ", a[i][j]);
		}
		fprintf(f, "\n");
	}
	fclose(f);
}

int main()
{
	int **a;
	int n, BestValue;
	init(a, &n);
	printf("working...\n");
	printf("a[0][0] = %d\n", a[0][0]);
	// BestValue = FindMaxValue(a, n);
	// printf("%d\n", BestValue);
	return 0;
}
The program was terminated in "printf("a[0][0] = %d\n", a[0][0]);". I think the problem relate the function init. It can't pass the "malloc 2d array" to main function. Please tell me how can i solve the passing 2d array. Thanks.
[The FindMaxValue function is omitted as it doesn't relate the problem]