#include <stdlib.h>
#include <stdio.h>
#include <inttypes.h>

int main()
{
	int n = 2;
	int m = 3;
//	int i[2][3] = { {1, 2, 3}, {4, 5, 6} };
	int * i = malloc(sizeof(int) * n * m);	// i[n][m]
	for(int j = 0; j < n * m; ++j) i[j] = j + 1;
	for(int j = 0; j < n; ++j)
	{
		for(int k = 0; k < m; ++k)
			printf("%d ", *(i + j * m + k));
		printf("\n");
	}

	int (*ii)[m] = (int(*)[m]) i;
	for(int j = 0; j < n; ++j)
	{
		for(int k = 0; k < m; ++k)
			printf("%d ", ii[j][k]); 
		printf("\n");
	}
	ii = (int(*)[m]) i;
	printf("i: %" PRIuPTR "\n", i);
	printf("ii: %" PRIuPTR "\n", ii);
	printf("sizeof(i): %" PRIuPTR "\n", sizeof(i));
	printf("sizeof(ii): %" PRIuPTR "\n", sizeof(ii));
	printf("sizeof(*ii): %" PRIuPTR "\n", sizeof(*ii));
	free(i);
}