/*
 *  This file shows how to pass 2D matrix to functions 
 */

#include <stdio.h>

// The following 3 functions are all equal and valid ways
// to pass matrix of column 4 to function
void printMatrix1(int matrix[3][4]);
void printMatrix2(int matrix[][4]);
void printMatrix3(int (*matrix)[4]);

int main(int argc, char *argv[])
{
	// matrix with pre-loaded values 
	int mat[3][4] = {
		{1, 2, 3, 4},
		{5, 6, 7, 8,},
		{9, 10, 11, 12},
	};

	// print matrix 
	printMatrix1(mat);
	printMatrix2(mat);
	printMatrix3(mat);

	return 0;
}

void printMatrix1(int matrix[3][4])
{
	int i=0, j=0;   // index variables

	// print matrix 
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
			printf("%d ", matrix[i][j]); 
		printf("\n"); 
	}
}

void printMatrix2(int matrix[][4])
{
	int i=0, j=0;   // index variables

	// print matrix 
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
			printf("%d ", matrix[i][j]); 
		printf("\n"); 
	}
}

void printMatrix3(int (*matrix)[4])
{
	int i=0, j=0;   // index variables

	// print matrix 
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
			printf("%d ", matrix[i][j]); 
		printf("\n"); 
	}
}
